/**
 * Carrot Search FoamTree HTML5 (demo variant)
 * v3.0.1, bugfix/3.0.x/962bb189, build VISHEAD-FOAMTREE30X-JOB1-9, Jan 09, 2014
 * 
 * Carrot Search confidential.
 * Copyright 2002-2014, Carrot Search s.c, All Rights Reserved.
 */
(function() {
    var w = function() {
        var a = window.navigator.userAgent,
        g;
        try {
            window.localStorage.setItem("foamtree", "foamtree"),
            window.localStorage.removeItem("foamtree"),
            g = !0
        } catch(k) {
            g = !1
        }
        return {
            Hg: function() {
                return /webkit/i.test(a)
            },
            Sd: function() {
                return /Mac/.test(a)
            },
            Rd: function() {
                return /iPad|iPod|iPhone/.test(a)
            },
            Qd: function() {
                return /Android/.test(a)
            },
            Od: function() {
                return "ontouchstart" in window || !!window.DocumentTouch && document instanceof window.DocumentTouch
            },
            Bg: function() {
                return g
            }
        }
    } ();
    var H = function() {
        function a() {
            return window.performance && (window.performance.now || window.performance.mozNow || window.performance.msNow || window.performance.oNow || window.performance.webkitNow) || Date.now
        }
        var g = a();
        return {
            create: function() {
                return {
                    now: function() {
                        var k = a();
                        return function() {
                            return k.call(window.performance)
                        }
                    } ()
                }
            },
            now: function() {
                return g.call(window.performance)
            }
        }
    } ();
    function ba() {
        function a() {
            if (!f) throw "AF0";
            var a = H.now();
            0 !== h && (k.Mc = a - h);
            h = a;
            e = e.filter(function(a) {
                return null !== a
            });
            k.frames++;
            for (var c = 0; c < e.length; c++) {
                var b = e[c];
                null !== b && (!0 === b.kd.call(b.wf) ? e[c] = null: J.Ud(b.repeat) && (b.repeat = b.repeat - 1, 0 >= b.repeat && (e[c] = null)))
            }
            e = e.filter(function(a) {
                return null !== a
            });
            f = !1;
            g();
            a = H.now() - a;
            0 !== a && (k.Lc = a);
            k.totalTime += a;
            k.wd = 1E3 * k.frames / k.totalTime;
            h = 0 === e.length ? 0 : H.now()
        }
        function g() {
            0 < e.length && !f && (f = !0, d(a))
        }
        var k = this.Ue = {
            frames: 0,
            totalTime: 0,
            Lc: 0,
            Mc: 0,
            wd: 0
        };
        ca = k;
        var d = function() {
            return w.Rd() ?
            function(a) {
                window.setTimeout(a, 0)
            }: window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame ||
            function() {
                var a = H.create();
                return function(c) {
                    var b = 0;
                    window.setTimeout(function() {
                        var f = a.now();
                        c();
                        b = a.now() - f
                    },
                    16 > b ? 16 - b: 0)
                }
            } ()
        } (),
        e = [],
        f = !1,
        h = 0;
        this.repeat = function(a, c, b) {
            this.cancel(a);
            e.push({
                kd: a,
                wf: b,
                repeat: c
            });
            g()
        };
        this.c = function(a, c) {
            this.repeat(a, 1, c)
        };
        this.cancel = function(a) {
            for (var c = 0; c < e.length; c++) {
                var b = e[c];
                null !== b && b.kd === a && (e[c] = null)
            }
        };
        this.k = function() {
            e = []
        }
    }
    var ca;
    function ha() {
        function a(a) {
            return function() {
                var b;
                for (b = 0; b < e.length; b++) {
                    var d = e[b];
                    null !== f[d] && (g[k++] = "set", g[k++] = d, g[k++] = f[d], f[d] = null)
                }
                g[k++] = "call";
                g[k++] = a;
                g[k++] = arguments.length;
                for (b = 0; b < arguments.length; b++) g[k++] = arguments[b]
            }
        }
        var g = [],
        k = 0,
        d = "beginPath closePath fill fillText stroke moveTo lineTo quadraticCurveTo save restore translate scale".split(" "),
        e = "font textBaseline textAlign globalAlpha fillStyle lineWidth shadowColor shadowBlur".split(" "),
        f = this,
        h,
        l;
        for (h = 0; h < e.length; h++) this[e[h]] = null;
        for (h = 0; h < d.length; h++) l = d[h],
        this[l] = a(l);
        this.clear = function() {
            k = 0
        };
        this.Pa = function() {
            return 0 === k
        };
        this.Kb = function(a) {
            for (var b = 0; b < k;) switch (g[b++]) {
            case "set":
                a[g[b++]] = g[b++];
                break;
            case "call":
                var f = g[b++];
                switch (g[b++]) {
                case 0:
                    a[f]();
                    break;
                case 1:
                    a[f](g[b++]);
                    break;
                case 2:
                    a[f](g[b++], g[b++]);
                    break;
                case 3:
                    a[f](g[b++], g[b++], g[b++]);
                    break;
                case 4:
                    a[f](g[b++], g[b++], g[b++], g[b++]);
                    break;
                case 5:
                    a[f](g[b++], g[b++], g[b++], g[b++], g[b++]);
                    break;
                case 6:
                    a[f](g[b++], g[b++], g[b++], g[b++], g[b++], g[b++]);
                    break;
                default:
                    throw "CB0";
                }
            }
        }
    };
    var ja = function() {
        var a = !w.Hg() || w.Rd() || w.Qd() ? 1 : 7;
        return {
            Df: function() {
                function g(a) {
                    a.beginPath();
                    ia.bd(a, l)
                }
                var k = document.createElement("canvas");
                k.width = 800;
                k.height = 600;
                var d = k.getContext("2d"),
                e = k.width,
                k = k.height,
                f,
                h = 0,
                l = [{
                    x: 0,
                    y: 100
                }];
                for (f = 1; 6 >= f; f++) h = 2 * f * Math.PI / 6,
                l.push({
                    x: 0 + 100 * Math.sin(h),
                    y: 0 + 100 * Math.cos(h)
                });
                f = {
                    polygonPlainFill: [g,
                    function(a) {
                        a.fillStyle = "rgb(255, 0, 0)";
                        a.fill()
                    }],
                    polygonPlainStroke: [g,
                    function(a) {
                        a.strokeStyle = "rgb(128, 0, 0)";
                        a.lineWidth = 2;
                        a.closePath();
                        a.stroke()
                    }],
                    polygonGradientFill: [g,
                    function(a) {
                        var b = a.createRadialGradient(0, 0, 10, 0, 0, 60);
                        b.addColorStop(0, "rgb(255, 0, 0)");
                        b.addColorStop(1, "rgb(255, 255, 0)");
                        a.fillStyle = b;
                        a.fill()
                    }],
                    polygonGradientStroke: [g,
                    function(a) {
                        var b = a.createLinearGradient( - 100, -100, 100, 100);
                        b.addColorStop(0, "rgb(224, 0, 0)");
                        b.addColorStop(1, "rgb(32, 0, 0)");
                        a.strokeStyle = b;
                        a.lineWidth = 2;
                        a.closePath();
                        a.stroke()
                    }],
                    polygonExposureShadow: [g,
                    function(a) {
                        a.shadowBlur = 50;
                        a.shadowColor = "rgba(0, 0, 0, 1)";
                        a.fillStyle = "rgba(0, 0, 0, 1)";
                        a.globalCompositeOperation = "source-over";
                        a.fill();
                        a.shadowBlur = 0;
                        a.shadowColor = "transparent";
                        a.globalCompositeOperation = "destination-out";
                        a.fill()
                    }],
                    labelPlainFill: [function(a) {
                        a.fillStyle = "#000";
                        a.font = "24px sans-serif";
                        a.textAlign = "center"
                    },
                    function(a) {
                        a.fillText("Some text", 0, -16);
                        a.fillText("for testing purposes", 0, 16)
                    }]
                };
                var h = 100 / Object.keys(f).length,
                c = H.now(),
                b = {},
                m;
                for (m in f) {
                    var n = f[m],
                    r = H.now(),
                    p,
                    s = 0;
                    do {
                        d.save();
                        d.translate(Math.random() * e, Math.random() * k);
                        p = 3 * Math.random() + 0.5;
                        d.scale(p, p);
                        for (p = 0; p < n.length; p++) n[p](d);
                        d.restore();
                        s++;
                        p = H.now()
                    } while ( p - r < h );
                    b[m] = a * (p - r) / s
                }
                b.total = H.now() - c;
                return b
            }
        }
    } ();
    var ia = {
        bd: function(a, g) {
            var k = g[0];
            a.moveTo(k.x, k.y);
            for (var d = g.length - 1; 0 < d; d--) k = g[d],
            a.lineTo(k.x, k.y)
        },
        Kh: function(a, g, k, d) {
            var e, f, h, l = [],
            c = 0,
            b = 0;
            for (h = 0; h < g.length; h++) e = g[h],
            f = g[(h + 1) % g.length],
            e = K.c(e, f),
            9 < e ? (e = Math.sqrt(e), l.push(e), c += e, b++) : l.push(0);
            k = d * (k + 0.5 * d * c / b);
            d = [];
            c = [];
            e = k / 3;
            for (h = 0; h < g.length; h++) f = l[h],
            f > e && (d.push(g[h]), c.push(f));
            g = d.length;
            if (3 > g) return ! 1;
            var m, n, l = {},
            b = {},
            r = {},
            p = 0;
            for (h = 0; h < g; h++) e = d[h],
            f = d[(h + 1) % g],
            m = d[(h + 2) % g],
            n = c[(h + 1) % g],
            n = Math.min(0.5, k / n),
            K.ua(1 - n, f, m, b),
            K.ua(n, f, m, r),
            p++,
            0 == h && (m = Math.min(0.5, k / c[0]), K.ua(m, e, f, l), p++, a.moveTo(l.x, l.y)),
            a.quadraticCurveTo(f.x, f.y, b.x, b.y),
            a.lineTo(r.x, r.y);
            return ! 0
        }
    };
    function ka(a) {
        function g(a) {
            b[a].style.opacity = n * m[a]
        }
        function k(a) {
            a.width = Math.round(e * a.o);
            a.height = Math.round(f * a.o)
        }
        var d, e, f, h, l, c = [],
        b = {},
        m = {},
        n = 0;
        this.q = function(b) {
            d = b;
            /relative|absolute|fixed/.test(window.getComputedStyle(d, null).getPropertyValue("position")) || (d.style.position = "relative");
            0 != d.clientWidth && 0 != d.clientHeight || la.ia("element has zero dimensions: " + d.clientWidth + " x " + d.clientHeight + ".");
            d.innerHTML = "";
            e = d.clientWidth;
            f = d.clientHeight;
            h = 0 !== e ? e: void 0;
            l = 0 !== f ? f: void 0;
            "embedded" === d.getAttribute("data-foamtree") && la.ia("visualization already embedded in the element.");
            d.setAttribute("data-foamtree", "embedded");
            a.d.p("stage:initialized", this, d, e, f)
        };
        this.Ma = function() {
            d.removeAttribute("data-foamtree");
            c = [];
            b = {};
            a.d.p("stage:disposed", this, d)
        };
        this.k = function() {
            e = d.clientWidth;
            f = d.clientHeight;
            if (0 !== e && 0 !== f && (e !== h || f !== l)) {
                for (var b = c.length - 1; 0 <= b; b--) k(c[b]);
                a.d.p("stage:resized", h, l, e, f);
                h = e;
                l = f
            }
        };
        this.yh = function(a, b) {
            a.o = b;
            k(a)
        };
        this.Hb = function(f, e, l) {
            var h = document.createElement("canvas");
            h.setAttribute("style", "position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 100%; height: 100%; -webkit-touch-callout: none; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none;");
            h.o = e;
            k(h);
            c.push(h);
            b[f] = h;
            m[f] = 1;
            g(f);
            l || d.appendChild(h);
            a.d.p("stage:newLayer", f, h);
            return h
        };
        this.Eb = function(a, b) {
            J.Z(b) || (m[a] = b, g(a));
            return m[a]
        };
        this.c = function(a) {
            J.Z(a) || (n = a, J.pa(b,
            function(a, b) {
                g(b)
            }));
            return n
        }
    };
    function ma(a) {
        function g(a, b, c) {
            x = !0;
            r.x = 0;
            r.y = 0;
            p.x = 0;
            p.y = 0;
            e = m;
            f.x = n.x;
            f.y = n.y;
            b();
            h *= a;
            l = c ? h / e: a;
            l = Math.max(0.25 / e, l);
            return ! 0
        }
        function k(a, b) {
            b.x = a.x / m + n.x;
            b.y = a.y / m + n.y;
            return b
        }
        function d(a, b, c, f, e, d, k, m, h) {
            var l = (a - c) * (d - m) - (b - f) * (e - k);
            if (1E-5 > Math.abs(l)) return ! 1;
            h.x = ((a * f - b * c) * (e - k) - (a - c) * (e * m - d * k)) / l;
            h.y = ((a * f - b * c) * (d - m) - (b - f) * (e * m - d * k)) / l;
            return ! 0
        }
        var e = 1,
        f = {
            x: 0,
            y: 0
        },
        h = 1,
        l = 1,
        c = 1,
        b = {
            x: 0,
            y: 0
        },
        m = 1,
        n = {
            x: 0,
            y: 0
        },
        r = {
            x: 0,
            y: 0
        },
        p = {
            x: 0,
            y: 0
        },
        s,
        u,
        q = {
            x: 0,
            y: 0,
            e: 0,
            j: 0
        },
        v = {
            x: 0,
            y: 0,
            e: 0,
            j: 0,
            scale: 1
        },
        x = !0;
        a.d.i("stage:initialized",
        function(a, b, c, f) {
            s = c;
            u = f;
            q.x = 0;
            q.y = 0;
            q.e = c;
            q.j = f;
            v.x = 0;
            v.y = 0;
            v.e = c;
            v.j = f;
            v.scale = 1
        });
        a.d.i("stage:resized",
        function(a, c, e, d) {
            function k(a) {
                a.x *= h;
                a.y *= l
            }
            function m(a) {
                k(a);
                a.e *= h;
                a.j *= l
            }
            s = e;
            u = d;
            var h = e / a,
            l = d / c;
            k(f);
            k(n);
            k(b);
            k(r);
            k(p);
            m(q);
            m(v)
        });
        this.pb = function(a, c) {
            return g(c,
            function() {
                k(a, b)
            },
            !0)
        };
        this.J = function(a, c) {
            if (1 === Math.round(1E4 * c) / 1E4) {
                var f = q.x - n.x,
                e = q.y - n.y;
                g(1,
                function() {},
                !0);
                return this.c( - f, -e)
            }
            return g(c,
            function() {
                for (var c = !1; ! c;) var c = Math.random(),
                f = Math.random(),
                e = Math.random(),
                k = Math.random(),
                c = d(a.x + c * a.e, a.y + f * a.j, q.x + c * q.e, q.y + f * q.j, a.x + e * a.e, a.y + k * a.j, q.x + e * q.e, q.y + k * q.j, b)
            },
            !0)
        };
        this.Nb = function(a, c) {
            var f, e, k, h;
            f = a.e / a.j;
            e = s / u;
            f < e ? (k = a.j * e, h = a.j, f = a.x - 0.5 * (k - a.e), e = a.y) : f > e ? (k = a.e, h = a.e * u / s, f = a.x, e = a.y - 0.5 * (h - a.j)) : (f = a.x, e = a.y, k = a.e, h = a.j);
            f -= k * c;
            e -= h * c;
            k *= 1 + 2 * c;
            if (d(f, e, n.x, n.y, f + k, e, n.x + s / m, n.y, b)) return g(s / m / k, J.Ra, !1);
            x = !1;
            return this.c(m * (n.x - f), m * (n.y - e))
        };
        this.c = function(a, b) {
            var c = Math.round(1E4 * a) / 1E4,
            f = Math.round(1E4 * b) / 1E4;
            p.x += c / m;
            p.y += f / m;
            return 0 !== c || 0 !== f
        };
        this.reset = function(a) {
            a && this.content(0, 0, s, u);
            return this.J({
                x: q.x + n.x,
                y: q.y + n.y,
                e: q.e / m,
                j: q.j / m
            },
            c / h)
        };
        this.hb = function(a) {
            c = Math.min(1, Math.round(1E4 * (a || h)) / 1E4)
        };
        this.k = function() {
            return n.x < q.x ? (q.x - n.x) * m: n.x + s / m > q.x + q.e ? -(n.x + s / m - q.x - q.e) * m: 0
        };
        this.n = function() {
            return n.y < q.y ? (q.y - n.y) * m: n.y + u / m > q.y + q.j ? -(n.y + u / m - q.y - q.j) * m: 0
        };
        this.update = function(a) {
            var c;
            c = (x ? a: 1) * (l - 1) + 1;
            m = e * c;
            n.x = b.x - (b.x - f.x) / c;
            n.y = b.y - (b.y - f.y) / c;
            n.x -= r.x * (1 - a) + p.x * a;
            n.y -= r.y * (1 - a) + p.y * a;
            1 === a && (r.x = p.x, r.y = p.y);
            v.x = n.x;
            v.y = n.y;
            v.e = s / m;
            v.j = u / m;
            v.scale = m
        };
        this.absolute = function(a, b) {
            return k(a, b || {})
        };
        this.gd = function(a, b) {
            var c = b || {};
            c.x = (a.x - n.x) * m;
            c.y = (a.y - n.y) * m;
            return c
        };
        this.Zb = function(a) {
            return this.scale() < c / a
        };
        this.Qc = function() {
            return J.Fc(m, 1)
        };
        this.scale = function() {
            return Math.round(1E4 * m) / 1E4
        };
        this.content = function(a, b, c, f) {
            q.x = a;
            q.y = b;
            q.e = c;
            q.j = f
        };
        this.$b = function(a, b) {
            var c;
            for (c = a.length - 1; 0 <= c; c--) {
                var f = a[c];
                f.save();
                f.scale(m, m);
                f.translate( - n.x, -n.y)
            }
            b(v);
            for (c = a.length - 1; 0 <= c; c--) f = a[c],
            f.restore()
        }
    };
    var S = new
    function() {
        function a(a) {
            if ("hsl" == a.model || "hsla" == a.model) return a;
            var d = a.r /= 255,
            e = a.g /= 255,
            f = a.b /= 255,
            h = Math.max(d, e, f),
            l = Math.min(d, e, f),
            c,
            b = (h + l) / 2;
            if (h == l) c = l = 0;
            else {
                var m = h - l,
                l = 0.5 < b ? m / (2 - h - l) : m / (h + l);
                switch (h) {
                case d:
                    c = (e - f) / m + (e < f ? 6 : 0);
                    break;
                case e:
                    c = (f - d) / m + 2;
                    break;
                case f:
                    c = (d - e) / m + 4
                }
                c /= 6
            }
            a.h = 360 * c;
            a.s = 100 * l;
            a.l = 100 * b;
            a.model = "hsl";
            return a
        }
        var g = {
            h: 0,
            s: 0,
            l: 0,
            a: 1,
            model: "hsla"
        };
        this.X = function(k) {
            return J.bb(k) ? a(S.gf(k)) : J.Bb(k) ? a(k) : g
        };
        this.gf = function(a) {
            var d;
            return (d = /rgba\(\s*([^,\s]+)\s*,\s*([^,\s]+)\s*,\s*([^,\s]+)\s*,\s*([^,\s]+)\s*\)/.exec(a)) && 5 == d.length ? {
                r: parseFloat(d[1]),
                g: parseFloat(d[2]),
                b: parseFloat(d[3]),
                a: parseFloat(d[4]),
                model: "rgba"
            }: (d = /hsla\(\s*([^,\s]+)\s*,\s*([^,%\s]+)%\s*,\s*([^,\s%]+)%\s*,\s*([^,\s]+)\s*\)/.exec(a)) && 5 == d.length ? {
                h: parseFloat(d[1]),
                s: parseFloat(d[2]),
                l: parseFloat(d[3]),
                a: parseFloat(d[4]),
                model: "hsla"
            }: (d = /rgb\(\s*([^,\s]+)\s*,\s*([^,\s]+)\s*,\s*([^,\s]+)\s*\)/.exec(a)) && 4 == d.length ? {
                r: parseFloat(d[1]),
                g: parseFloat(d[2]),
                b: parseFloat(d[3]),
                a: 1,
                model: "rgb"
            }: (d = /hsl\(\s*([^,\s]+)\s*,\s*([^,\s%]+)%\s*,\s*([^,\s%]+)%\s*\)/.exec(a)) && 4 == d.length ? {
                h: parseFloat(d[1]),
                s: parseFloat(d[2]),
                l: parseFloat(d[3]),
                a: 1,
                model: "hsl"
            }: (d = /#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})/.exec(a)) && 4 == d.length ? {
                r: parseInt(d[1], 16),
                g: parseInt(d[2], 16),
                b: parseInt(d[3], 16),
                a: 1,
                model: "rgb"
            }: (d = /#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])/.exec(a)) && 4 == d.length ? {
                r: 17 * parseInt(d[1], 16),
                g: 17 * parseInt(d[2], 16),
                b: 17 * parseInt(d[3], 16),
                a: 1,
                model: "rgb"
            }: g
        };
        this.cf = function(a) {
            function d(a, b, f) {
                0 > f && (f += 1);
                1 < f && (f -= 1);
                return f < 1 / 6 ? a + 6 * (b - a) * f: 0.5 > f ? b: f < 2 / 3 ? a + (b - a) * (2 / 3 - f) * 6 : a
            }
            if ("rgb" == a.model || "rgba" == a.model) return Math.sqrt(a.r * a.r * 0.241 + a.g * a.g * 0.691 + a.b * a.b * 0.068) / 255;
            var e, f;
            e = a.l / 100;
            var h = a.s / 100;
            f = a.h / 360;
            if (0 == a.li) e = a = f = e;
            else {
                var h = 0.5 > e ? e * (1 + h) : e + h - e * h,
                l = 2 * e - h;
                e = d(l, h, f + 1 / 3);
                a = d(l, h, f);
                f = d(l, h, f - 1 / 3)
            }
            return Math.sqrt(65025 * e * e * 0.241 + 65025 * a * a * 0.691 + 65025 * f * f * 0.068) / 255
        };
        this.of = function(a) {
            if (J.bb(a)) return a;
            if (J.Bb(a)) switch (a.model) {
            case "hsla":
                return S.hf(a);
            case "hsl":
                return S.Wb(a);
            case "rgba":
                return S.lf(a);
            case "rgb":
                return S.kf(a);
            default:
                return "#000"
            } else return "#000"
        };
        this.lf = function(a) {
            return "rgba(" + (0.5 + a.r | 0) + "," + (0.5 + a.g | 0) + "," + (0.5 + a.b | 0) + "," + a.a + ")"
        };
        this.kf = function(a) {
            return "rgba(" + (0.5 + a.r | 0) + "," + (0.5 + a.g | 0) + "," + (0.5 + a.b | 0) + ")"
        };
        this.hf = function(a) {
            return "hsla(" + (0.5 + a.h | 0) + "," + (0.5 + a.s | 0) + "%," + (0.5 + a.l | 0) + "%," + a.a + ")"
        };
        this.Wb = function(a) {
            return "hsl(" + (0.5 + a.h | 0) + "," + (0.5 + a.s | 0) + "%," + (0.5 + a.l | 0) + "%)"
        };
        this.J = function(a, d, e) {
            return "hsl(" + (0.5 + a | 0) + "," + (0.5 + d | 0) + "%," + (0.5 + e | 0) + "%)"
        }
    };
    function T() {
        var a = !1,
        g, k = [],
        d = this,
        e = new
        function() {
            this.H = function(f) {
                f && (a ? f.apply(d, g) : k.push(f));
                return this
            };
            this.Hf = function(a) {
                d = a;
                return {
                    then: this.H
                }
            }
        };
        this.F = function() {
            g = arguments;
            for (var f = 0; f < k.length; f++) k[f].apply(d, g);
            a = !0;
            return this
        };
        this.K = function() {
            return e
        }
    }
    function V(a) {
        var g = new T,
        k = a.length;
        if (0 < a.length) for (var d = a.length - 1; 0 <= d; d--) a[d].H(function() {
            0 === --k && g.F()
        });
        else g.F();
        return g.K()
    }
    function na(a) {
        var g = 0;
        this.c = function() {
            g++
        };
        this.k = function() {
            g--;
            0 === g && a()
        };
        this.clear = function() {
            g = 0
        };
        this.n = function() {
            return 0 === g
        }
    };
    var oa = {
        rd: function(a, g, k, d) {
            d = d || {};
            a = a.getBoundingClientRect();
            d.x = g - a.left;
            d.y = k - a.top;
            return d
        }
    };
    function pa() {
        var a = document,
        g = {};
        this.addEventListener = function(k, d) {
            var e = g[k];
            e || (e = [], g[k] = e);
            e.push(d);
            a.addEventListener(k, d)
        };
        this.c = function() {
            J.pa(g,
            function(k, d) {
                for (var e = k.length - 1; 0 <= e; e--) a.removeEventListener(d, k[e])
            })
        }
    };
    function qa(a) {
        function g(a) {
            return function(b) {
                k(b) && a.apply(this, arguments)
            }
        }
        function k(b) {
            for (b = b.target; b;) {
                if (b === a) return ! 0;
                b = b.parentElement
            }
            return ! 1
        }
        function d(a, b, c) {
            c = c || {};
            e(a, c);
            for (var f = 0; f < b.length; f++) b[f].call(a.target, c);
            return c
        }
        function e(b, c) {
            oa.rd(a, b.clientX, b.clientY, c);
            c.altKey = b.altKey;
            c.metaKey = b.metaKey;
            c.ctrlKey = b.ctrlKey;
            c.shiftKey = b.shiftKey;
            c.jb = 3 === b.which;
            return c
        }
        var f = new pa,
        h = [],
        l = [],
        c = [],
        b = [],
        m = [],
        n = [],
        r = [],
        p = [],
        s = [],
        u = [];
        this.c = function(a) {
            h.push(a)
        };
        this.k = function(a) {
            b.push(a)
        };
        this.ha = function(a) {
            l.push(a)
        };
        this.qa = function(a) {
            c.push(a)
        };
        this.ma = function(a) {
            u.push(a)
        };
        this.ia = function(a) {
            m.push(a)
        };
        this.ua = function(a) {
            n.push(a)
        };
        this.X = function(a) {
            r.push(a)
        };
        this.n = function(a) {
            p.push(a)
        };
        this.J = function(a) {
            s.push(a)
        };
        this.Ma = function() {
            f.c()
        };
        var q, v, x, z, y = {
            x: 0,
            y: 0
        },
        B = {
            x: 0,
            y: 0
        },
        F = !1,
        G = !1;
        f.addEventListener("mousedown", g(function(b) {
            if (b.target !== a) {
                var f = d(b, c);
                B.x = f.x;
                B.y = f.y;
                y.x = f.x;
                y.y = f.y;
                F = !0;
                d(b, r);
                v = !1;
                q = window.setTimeout(function() {
                    100 > K.c(y, f) && (window.clearTimeout(z), d(b, l), v = !0)
                },
                400)
            }
        }));
        f.addEventListener("mouseup",
        function(a) {
            function c(a) {
                var b = {};
                b.x = a.pageX;
                b.y = a.pageY;
                return b
            }
            G && d(a, s);
            window.clearTimeout(q);
            if (!v && !G && k(a)) {
                var f = c(a);
                x && 100 > K.c(f, x) ? d(a, b) : d(a, h);
                x = f;
                z = window.setTimeout(function() {
                    x = null
                },
                350)
            }
            G = F = !1
        });
        f.addEventListener("mousemove",
        function(a) {
            var b = e(a, {});
            k(a) && d(a, m, {
                type: "move"
            });
            y.x = b.x;
            y.y = b.y;
            F && !G && 100 < K.c(B, y) && (G = !0);
            G && d(a, p, b)
        });
        f.addEventListener("mouseout", g(function(a) {
            d(a, n, {
                type: "out"
            })
        }));
        f.addEventListener(void 0 !== document.onmousewheel ? "mousewheel": "MozMousePixelScroll", g(function(a) {
            a.preventDefault();
            var b = a.wheelDelta,
            c = a.detail;
            d(a, u, {
                Bc: (c ? b ? 0 < b / c / 40 * c ? 1 : -1 : -c / (w.Sd() ? 40 : 19) : b / 40) / 3
            })
        }));
        f.addEventListener("contextmenu", g(function(a) {
            a.preventDefault()
        }))
    };
    var W = function() {
        function a(a) {
            return function(f) {
                return Math.pow(f, a)
            }
        }
        function g(a) {
            return function(f) {
                return 1 - Math.pow(1 - f, a)
            }
        }
        function k(a) {
            return function(f) {
                return 1 > (f *= 2) ? 0.5 * Math.pow(f, a) : 1 - 0.5 * Math.abs(Math.pow(2 - f, a))
            }
        }
        function d(a) {
            return function(f) {
                for (var d = 0; d < a.length; d++) f = (0, a[d])(f);
                return f
            }
        }
        return {
            W: function(a) {
                switch (a) {
                case "linear":
                    return W.cb;
                case "bounce":
                    return W.tf;
                case "squareIn":
                    return W.Re;
                case "squareOut":
                    return W.kb;
                case "squareInOut":
                    return W.Se;
                case "cubicIn":
                    return W.xf;
                case "cubicOut":
                    return W.ld;
                case "cubicInOut":
                    return W.yf;
                case "quadIn":
                    return W.kh;
                case "quadOut":
                    return W.mh;
                case "quadInOut":
                    return W.lh;
                default:
                    return W.cb
                }
            },
            cb: function(a) {
                return a
            },
            tf: d([k(2),
            function(a) {
                return 0 === a ? 0 : 1 === a ? 1 : a * (a * (a * (a * (25.9425 * a - 85.88) + 105.78) - 58.69) + 13.8475)
            }]),
            Re: a(2),
            kb: g(2),
            Se: k(2),
            xf: a(3),
            ld: g(3),
            yf: k(3),
            kh: a(2),
            mh: g(2),
            lh: k(2),
            c: d
        }
    } ();
    var J = {
        Z: function(a) {
            return void 0 === a
        },
        Td: function(a) {
            return null === a
        },
        Ud: function(a) {
            return "[object Number]" === Object.prototype.toString.call(a)
        },
        bb: function(a) {
            return "[object String]" === Object.prototype.toString.call(a)
        },
        Gc: function(a) {
            return "function" === typeof a
        },
        Bb: function(a) {
            return a === Object(a)
        },
        Fc: function(a, g) {
            return 1E-6 > a - g && -1E-6 < a - g
        },
        Gg: function(a) {
            return J.Z(a) || J.Td(a) || J.bb(a) && !/\S/.test(a)
        },
        Q: function(a, g) {
            return a && a.hasOwnProperty(g)
        },
        Za: function(a, g) {
            if (a) for (var k = g.length - 1; 0 <= k; k--) if (a.hasOwnProperty(g[k])) return ! 0;
            return ! 1
        },
        extend: function(a) {
            J.Af(Array.prototype.slice.call(arguments, 1),
            function(g) {
                if (g) for (var k in g) g.hasOwnProperty(k) && (a[k] = g[k])
            });
            return a
        },
        n: function(a, g) {
            return a.map(function(a) {
                return a[g]
            },
            [])
        },
        Af: function(a, g, k) {
            null != a && (a.forEach ? a.forEach(g, k) : J.pa(a, g, k))
        },
        pa: function(a, g, k) {
            for (var d in a) if (a.hasOwnProperty(d) && !1 === g.call(k, a[d], d, a)) break
        },
        ya: function() {
            for (var a = 0; a < arguments.length; a++) {
                var g = arguments[a];
                if (! (J.Z(g) || J.Ud(g) && isNaN(g) || J.bb(g) && J.Gg(g))) return g
            }
        },
        Ge: function(a, g) {
            var k = a.indexOf(g);
            0 <= k && a.splice(k, 1)
        },
        zf: function(a, g, k) {
            var d;
            return function() {
                var e = this,
                f = arguments,
                h = k && !d;
                clearTimeout(d);
                d = setTimeout(function() {
                    d = null;
                    k || a.apply(e, f)
                },
                g);
                h && a.apply(e, f)
            }
        },
        defer: function(a) {
            setTimeout(a, 1)
        },
        k: function(a) {
            return a
        },
        Ra: function() {}
    };
    var ra = {
        Cg: function(a, g, k) {
            return w.Bg() ?
            function() {
                var d = g + ":" + JSON.stringify(arguments),
                e = window.localStorage.getItem(d);
                e && (e = JSON.parse(e));
                if (e && Date.now() - e.t < k) return e.v;
                e = a.apply(this, arguments);
                window.localStorage.setItem(d, JSON.stringify({
                    v: e,
                    t: Date.now()
                }));
                return e
            }: a
        }
    };
    var sa = {
        m: function(a, g) {
            function k() {
                var d = [];
                if (Array.isArray(a)) for (var e = 0; e < a.length; e++) {
                    var f = a[e];
                    f && d.push(f.apply(g, arguments))
                } else a && d.push(a.apply(g, arguments));
                return d
            }
            k.empty = function() {
                return 0 === a.length && !J.Gc(a)
            };
            return k
        }
    };
    function ta() {
        var a = {};
        this.i = function(g, k) {
            var d = a[g];
            d || (d = [], a[g] = d);
            d.push(k)
        };
        this.p = function(g, k) {
            var d = a[g];
            if (d) for (var e = Array.prototype.slice.call(arguments, 1), f = 0; f < d.length; f++) d[f].apply(this, e)
        }
    };
    var ua = {
        Ne: function(a) {
            for (var g = "",
            k = 0; k < a.length; k++) g += String.fromCharCode(a.charCodeAt(k) ^ 1);
            return g
        }
    };
    function va(a) {
        function g(b, e, k) {
            var g = this,
            p, s = 0;
            this.id = h++;
            this.name = k ? k: "{unnamed on " + b + "}";
            this.target = function() {
                return b
            };
            this.ab = function() {
                return - 1 != c.indexOf(g)
            };
            this.start = function() {
                if (!g.ab()) {
                    if ( - 1 == c.indexOf(g)) {
                        var b = l.now(); ! 0 === g.ae(b) && (c = c.slice(), c.push(g))
                    }
                    0 < c.length && a.repeat(d)
                }
                return this
            };
            this.stop = function() {
                for (f(g); p < e.length; p++) {
                    var a = e[p];
                    a.Ka && a.Da.call()
                }
                return this
            };
            this.He = function() {
                p = void 0
            };
            this.ae = function(a) {
                s++;
                if (0 !== e.length) {
                    var b;
                    J.Z(p) ? (p = 0, b = e[p], b.P && b.P.call(b, a, s, g)) : b = e[p];
                    for (; p < e.length;) {
                        if (b.Da && b.Da.call(b, a, s, g)) return ! 0;
                        b.xa && b.xa.call(b, a, s, g);
                        J.Z(p) && (p = -1); ++p < e.length && (b = e[p], b.P && b.P.call(b, a, s, g))
                    }
                }
                return ! 1
            }
        }
        function k(a) {
            return J.Z(a) ? c.slice() : c.filter(function(c) {
                return c.target() === a
            })
        }
        function d() {
            e();
            0 == c.length && a.cancel(d)
        }
        function e() {
            var a = l.now();
            c.forEach(function(c) { ! 0 !== c.ae(a) && f(c)
            })
        }
        function f(a) {
            c = c.filter(function(c) {
                return c !== a
            })
        }
        var h = 0,
        l = H.create(),
        c = [];
        this.c = function() {
            for (var a = c.length - 1; 0 <= a; a--) c[a].stop();
            c = []
        };
        this.w = function() {
            function a() {}
            function c(a) {
                var b = a.target,
                f = a.duration,
                e = a.N,
                d, h;
                this.P = function() {
                    d = {};
                    for (var c in a.B) b.hasOwnProperty(c) && (d[c] = {
                        start: J.Z(a.B[c].start) ? b[c] : J.Gc(a.B[c].start) ? a.B[c].start.call(void 0) : a.B[c].start,
                        end: J.Z(a.B[c].end) ? b[c] : J.Gc(a.B[c].end) ? a.B[c].end.call(void 0) : a.B[c].end,
                        I: J.Z(a.B[c].I) ? W.cb: a.B[c].I
                    });
                    h = l.now()
                };
                this.Da = function() {
                    var a = l.now() - h,
                    a = 0 === f ? 1 : Math.min(f, a) / f,
                    c;
                    for (c in d) {
                        var k = d[c];
                        b[c] = k.start + (k.end - k.start) * k.I(a)
                    }
                    e && e.call(b, a);
                    return 1 > a
                }
            }
            function f(a, b, c) {
                this.Ka = c;
                this.Da = function() {
                    a.call(b);
                    return ! 1
                }
            }
            function e(a) {
                var b;
                this.P = function(c, f) {
                    b = f + a
                };
                this.Da = function(a, c) {
                    return c < b
                }
            }
            function d(a) {
                var b;
                this.P = function(c) {
                    b = c + a
                };
                this.Da = function(a) {
                    return a < b
                }
            }
            function h(a) {
                this.P = function() {
                    a.forEach(function(a) {
                        a.start()
                    })
                };
                this.Da = function() {
                    for (var b = 0; b < a.length; b++) if (a[b].ab()) return ! 0;
                    return ! 1
                }
            }
            a.m = function(a, b) {
                return new
                function() {
                    function k(b, c, e, d) {
                        return c ? (J.Z(e) && (e = a), b.Va(new f(c, e, d))) : b
                    }
                    var l = [];
                    this.Va = function(a) {
                        l.push(a);
                        return this
                    };
                    this.Ia = function(a) {
                        return this.Va(new d(a))
                    };
                    this.dd = function(a) {
                        return this.Va(new e(a || 1))
                    };
                    this.call = function(a, b) {
                        return k(this, a, b, !1)
                    };
                    this.Ka = function(a, b) {
                        return k(this, a, b, !0)
                    };
                    this.O = function(b) {
                        J.Z(b.target) && (b.target = a);
                        return this.Va(new c(b))
                    };
                    this.Fa = function(a) {
                        return this.Va(new h(a))
                    };
                    this.He = function() {
                        return this.Va({
                            Da: function(a, b) {
                                b.He();
                                return ! 0
                            }
                        })
                    };
                    this.ga = function() {
                        return new g(a, l, b)
                    };
                    this.start = function() {
                        return this.ga().start()
                    };
                    this.ef = function() {
                        var a = new T;
                        this.dd().call(a.F).ga();
                        return a.K()
                    };
                    this.Ha = function() {
                        var a = this.ef();
                        this.start();
                        return a
                    }
                }
            };
            a.Qb = function(c) {
                k(c).forEach(function(a) {
                    a.stop()
                });
                return a.m(c, void 0)
            };
            return a
        } ()
    };
    var X = function() {
        var a = {
            pd: function(a, k) {
                if (a.f) for (var d = a.f,
                e = 0; e < d.length; e++) k(d[e], e)
            },
            ac: function(g, k) {
                if (g.f) for (var d = g.f,
                e = 0; e < d.length; e++) if (!1 === a.ac(d[e], k) || !1 === k(d[e], e)) return ! 1
            }
        };
        a.A = a.ac;
        a.bc = function(g, k) {
            if (g.f) for (var d = g.f,
            e = 0; e < d.length; e++) if (!1 === k(d[e], e) || !1 === a.bc(d[e], k)) return ! 1
        };
        a.Na = function(g, k) {
            if (g.f) for (var d = g.f,
            e = 0; e < d.length; e++) if (!1 === a.Na(d[e], k)) return ! 1;
            return k(g)
        };
        a.di = a.Na;
        a.qd = function(g, k) { ! 1 !== k(g) && a.bc(g, k)
        };
        a.Cc = function(g, k) {
            var d = [];
            a.bc(g,
            function(a) {
                d.push(a)
            });
            return k ? d.filter(k) : d
        };
        a.Bf = function(a, k) {
            for (var d = a.parent; d && !1 !== k(d);) d = d.parent
        };
        a.Fg = function(a, k) {
            for (var d = a.parent; d && d !== k;) d = d.parent;
            return !! d
        };
        return a
    } ();
    var K = new
    function() {
        function a(a, d) {
            var e = a.x - d.x,
            f = a.y - d.y;
            return e * e + f * f
        }
        function g(a, d, e) {
            for (var f = 0; f < a.length; f++) {
                var h = K.ma(a[f], a[f + 1] || a[0], d, e, !0);
                if (h) return h
            }
        }
        this.ma = function(a, d, e, f, h) {
            var l = a.x;
            a = a.y;
            var c = d.x - l;
            d = d.y - a;
            var b = e.x,
            m = e.y;
            e = f.x - b;
            var g = f.y - m;
            f = c * g - e * d;
            if (! (1E-5 >= f && -1E-5 <= f) && (b = b - l, m = m - a, e = (b * g - e * m) / f, f = (b * d - c * m) / f, 0 <= f && (h || 1 >= f) && 0 <= e && 1 >= e)) return {
                x: l + c * e,
                y: a + d * e
            }
        };
        this.hd = function(a, d, e) {
            for (var f = K.k(d, {}), h = K.k(e, {}), l, c = h.x - f.x, b = h.y - f.y, m = [], h = 0; h < e.length; h++) l = e[h],
            m.push({
                x: l.x - c,
                y: l.y - b
            });
            e = [];
            l = [];
            for (h = 0; h < a.length; h++) {
                var n = a[h],
                r = g(d, f, n);
                r ? (e.push(r), l.push(g(m, f, n))) : (e.push(null), l.push(null))
            }
            for (h = 0; h < a.length; h++) if (r = e[h], n = l[h], r && n) {
                d = a[h];
                var m = f,
                p = r.x - f.x,
                r = r.y - f.y,
                r = Math.sqrt(p * p + r * r);
                if (1E-5 < r) {
                    var p = d.x - f.x,
                    s = d.y - f.y,
                    r = Math.sqrt(p * p + s * s) / r;
                    d.x = m.x + r * (n.x - m.x);
                    d.y = m.y + r * (n.y - m.y)
                } else d.x = m.x,
                d.y = m.y
            }
            for (h = 0; h < a.length; h++) l = a[h],
            l.x += c,
            l.y += b
        };
        this.C = function(a, d) {
            if (0 !== a.length) {
                var e, f, h, l;
                e = f = a[0].x;
                h = l = a[0].y;
                for (var c = a.length; 0 < --c;) e = Math.min(e, a[c].x),
                f = Math.max(f, a[c].x),
                h = Math.min(h, a[c].y),
                l = Math.max(l, a[c].y);
                d.x = e;
                d.y = h;
                d.e = f - e;
                d.j = l - h;
                return d
            }
        };
        this.Tb = function(a) {
            return [{
                x: a.x,
                y: a.y
            },
            {
                x: a.x + a.e,
                y: a.y
            },
            {
                x: a.x + a.e,
                y: a.y + a.j
            },
            {
                x: a.x,
                y: a.y + a.j
            }]
        };
        this.k = function(a, d) {
            for (var e = 0,
            f = 0,
            h = 0,
            l = a.length,
            c = 0; c < l; c++) var b = a[c],
            g = c + 1 < l ? a[c + 1] : a[0],
            n = b.x * g.y - g.x * b.y,
            e = e + n,
            f = f + (b.x + g.x) * n,
            h = h + (b.y + g.y) * n;
            d.x = f / (3 * e);
            d.y = h / (3 * e);
            d.ea = e / 2;
            return d
        };
        this.Ga = function(a, d) {
            for (var e = 0; e < a.length; e++) {
                var f = a[e],
                h = a[e + 1] || a[0];
                if (0 > (d.y - f.y) * (h.x - f.x) - (d.x - f.x) * (h.y - f.y)) return ! 1
            }
            return ! 0
        };
        this.mf = function(a, d, e) {
            var f = a.x,
            h = d.x;
            a.x > d.x && (f = d.x, h = a.x);
            h > e.x + e.e && (h = e.x + e.e);
            f < e.x && (f = e.x);
            if (f > h) return ! 1;
            var l = a.y,
            c = d.y,
            b = d.x - a.x;
            1E-7 < Math.abs(b) && (c = (d.y - a.y) / b, a = a.y - c * a.x, l = c * f + a, c = c * h + a);
            l > c && (f = c, c = l, l = f);
            c > e.y + e.j && (c = e.y + e.j);
            l < e.y && (l = e.y);
            return l <= c
        };
        this.jf = function(k, d, e) {
            var f;
            function h() {
                var b = g(k, d, c),
                e = a(b, d);
                e < l && (l = e, f = b.y)
            }
            var l = Number.MAX_VALUE;
            f = 0;
            var c = {
                x: 0,
                y: 0
            };
            c.x = d.x - e;
            c.y = d.y - 1;
            h();
            c.x = d.x + e;
            c.y = d.y - 1;
            h();
            c.x = d.x - e;
            c.y = d.y + 1;
            h();
            c.x = d.x + e;
            c.y = d.y + 1;
            h();
            return 2 * Math.abs(f - d.y)
        };
        this.ua = function(a, d, e, f) {
            f.x = a * (d.x - e.x) + e.x;
            f.y = a * (d.y - e.y) + e.y
        };
        this.c = a;
        return this
    };
    var wa = new
    function() {
        function a(a, e) {
            this.face = a;
            this.rc = e;
            this.Ib = this.nc = null
        }
        function g(a, e, d) {
            this.S = [a, e, d];
            this.D = Array(3);
            var c = e.y - a.y,
            b = d.z - a.z,
            g = e.x - a.x;
            e = e.z - a.z;
            var n = d.x - a.x;
            a = d.y - a.y;
            this.ta = {
                x: c * b - e * a,
                y: e * n - g * b,
                z: g * a - c * n
            };
            this.La = [];
            this.xc = this.visible = !1
        }
        this.n = function(f) {
            function d(b, f, e) {
                var l, h, P = b.S[0],
                g = b.ta,
                m = g.x,
                k = g.y,
                g = g.z,
                p = Array(n);
                f = f.La;
                l = f.length;
                for (c = 0; c < l; c++) h = f[c].rc,
                p[h.index] = !0,
                0 > m * (h.x - P.x) + k * (h.y - P.y) + g * (h.z - P.z) && a.c(b, h);
                f = e.La;
                l = f.length;
                for (c = 0; c < l; c++) h = f[c].rc,
                !0 !== p[h.index] && 0 > m * (h.x - P.x) + k * (h.y - P.y) + g * (h.z - P.z) && a.c(b, h)
            }
            var l, c, b, m, n = f.length;
            for (l = 0; l < n; l++) f[l].index = l,
            f[l].sb = null;
            var r = [],
            p;
            if (0 < (p = function() {
                function b(a, c, f, e) {
                    var d = (c.y - a.y) * (f.z - a.z) - (c.z - a.z) * (f.y - a.y),
                    h = (c.z - a.z) * (f.x - a.x) - (c.x - a.x) * (f.z - a.z),
                    l = (c.x - a.x) * (f.y - a.y) - (c.y - a.y) * (f.x - a.x);
                    return d * e.x + h * e.y + l * e.z > d * a.x + h * a.y + l * a.z ? new g(a, c, f) : new g(f, c, a)
                }
                function c(a, b, f, e) {
                    function d(a, b, c) {
                        a = a.S;
                        b = a[0] == b ? 0 : a[1] == b ? 1 : 2;
                        return a[(b + 1) % 3] != c ? (b + 2) % 3 : b
                    }
                    b.D[d(b, f, e)] = a;
                    a.D[d(a, e, f)] = b
                }
                if (4 > n) return 0;
                var e = f[0],
                d = f[1],
                h = f[2],
                l = f[3],
                m = b(e, d, h, l),
                k = b(e, h, l, d),
                p = b(e, d, l, h),
                x = b(d, h, l, e);
                c(m, k, h, e);
                c(m, p, e, d);
                c(m, x, d, h);
                c(k, p, l, e);
                c(k, x, h, l);
                c(p, x, l, d);
                r.push(m, k, p, x);
                for (e = 4; e < n; e++) for (d = f[e], h = 0; 4 > h; h++) l = r[h],
                m = l.S[0],
                k = l.ta,
                0 > k.x * (d.x - m.x) + k.y * (d.y - m.y) + k.z * (d.z - m.z) && a.c(l, d);
                return 4
            } ())) {
                for (; p < n;) {
                    b = f[p];
                    if (b.sb) {
                        for (l = b.sb; null !== l;) l.face.visible = !0,
                        l = l.Ib;
                        var s, u;
                        l = 0;
                        a: for (; l < r.length; l++) if (m = r[l], !1 === m.visible) {
                            var q = m.D;
                            for (c = 0; 3 > c; c++) if (!0 === q[c].visible) {
                                s = m;
                                u = c;
                                break a
                            }
                        }
                        m = [];
                        var q = [],
                        v = s,
                        x = u;
                        do
                        if (m.push(v), q.push(x), x = (x + 1) % 3, !1 === v.D[x].visible) {
                            do
                            for (l = v.S[x], v = v.D[x], c = 0; 3 > c; c++) v.S[c] == l && (x = c);
                            while (!1 === v.D[x].visible && (v !== s || x !== u))
                        }
                        while (v !== s || x !== u);
                        var z = null,
                        y = null;
                        for (l = 0; l < m.length; l++) {
                            var v = m[l],
                            x = q[l],
                            B = v.D[x],
                            F = v.S[(x + 1) % 3],
                            G = v.S[x],
                            N = F.y - b.y,
                            t = G.z - b.z,
                            A = F.x - b.x,
                            R = F.z - b.z,
                            M = G.x - b.x,
                            D = G.y - b.y,
                            C;
                            0 < e.length ? (C = e.pop(), C.S[0] = b, C.S[1] = F, C.S[2] = G, C.ta.x = N * t - R * D, C.ta.y = R * M - A * t, C.ta.z = A * D - N * M, C.La.length = 0, C.visible = !1, C.xc = !0) : C = {
                                S: [b, F, G],
                                D: Array(3),
                                ta: {
                                    x: N * t - R * D,
                                    y: R * M - A * t,
                                    z: A * D - N * M
                                },
                                La: [],
                                visible: !1
                            };
                            r.push(C);
                            v.D[x] = C;
                            C.D[1] = v;
                            null !== y && (y.D[0] = C, C.D[2] = y);
                            y = C;
                            null === z && (z = C);
                            d(C, v, B)
                        }
                        y.D[0] = z;
                        z.D[2] = y;
                        l = [];
                        for (c = 0; c < r.length; c++) if (m = r[c], !0 === m.visible) {
                            q = m.La;
                            v = q.length;
                            for (b = 0; b < v; b++) x = q[b],
                            z = x.nc,
                            y = x.Ib,
                            null !== z && (z.Ib = y),
                            null !== y && (y.nc = z),
                            null === z && (x.rc.sb = y),
                            k.push(x);
                            m.xc && e.push(m)
                        } else l.push(m);
                        r = l
                    }
                    p++
                }
                for (l = 0; l < r.length; l++) m = r[l],
                m.xc && e.push(m)
            }
            return {
                sd: r
            }
        };
        a.c = function(f, e) {
            var d;
            0 < k.length ? (d = k.pop(), d.face = f, d.rc = e, d.Ib = null, d.nc = null) : d = new a(f, e);
            f.La.push(d);
            var c = e.sb;
            null !== c && (c.nc = d);
            d.Ib = c;
            e.sb = d
        };
        for (var k = Array(2E3), d = 0; d < k.length; d++) k[d] = new a(null, null);
        for (var e = Array(1E3), d = 0; d < e.length; d++) e[d] = {
            S: Array(3),
            D: Array(3),
            ta: {
                x: 0,
                y: 0,
                z: 0
            },
            La: [],
            visible: !1
        }
    };
    var xa = new
    function() {
        function a(a, d, e, f, h, l, c, b) {
            var m = (a - e) * (l - b) - (d - f) * (h - c);
            return Math.abs(m) < g ? void 0 : {
                x: ((a * f - d * e) * (h - c) - (a - e) * (h * b - l * c)) / m,
                y: ((a * f - d * e) * (l - b) - (d - f) * (h * b - l * c)) / m
            }
        }
        var g = 0.0010;
        this.Ea = function(k, d) {
            for (var e = k,
            f = [], h = 0; h < e.length; h++) {
                var l = e[h % e.length],
                c = e[(h + 1) % e.length],
                b = e[(h + 2) % e.length],
                c = (c.x - l.x) * (b.y - l.y) - (b.x - l.x) * (c.y - l.y);
                f.push(l);
                Math.abs(c) < g && h++
            }
            k = f;
            e = k[0];
            f = e.x;
            h = e.y;
            l = e.x;
            c = e.y;
            for (b = k.length - 1; 0 < b; b--) e = k[b],
            f = Math.min(f, e.x),
            h = Math.min(h, e.y),
            l = Math.max(l, e.x),
            c = Math.max(c, e.y);
            if (l - f < 3 * d || c - h < 3 * d) e = void 0;
            else {
                a: {
                    e = k;
                    f = !0;
                    void 0 == f && (f = !1);
                    h = [];
                    l = e.length;
                    for (c = 0; c <= l; c++) {
                        var b = e[c % l],
                        m = e[(c + 1) % l],
                        n = e[(c + 2) % l],
                        r,
                        p,
                        s;
                        r = m.x - b.x;
                        p = m.y - b.y;
                        s = Math.sqrt(r * r + p * p);
                        var u = d * r / s,
                        q = d * p / s;
                        r = n.x - m.x;
                        p = n.y - m.y;
                        s = Math.sqrt(r * r + p * p);
                        r = d * r / s;
                        p = d * p / s;
                        if (b = a(b.x - q, b.y + u, m.x - q, m.y + u, m.x - p, m.y + r, n.x - p, n.y + r)) if (h.push(b), n = h.length, f && 3 <= n && (b = h[n - 3], m = h[n - 2], n = h[n - 1], 0 > (m.x - b.x) * (n.y - b.y) - (n.x - b.x) * (m.y - b.y))) {
                            e = void 0;
                            break a
                        }
                    }
                    e = h
                }
                if (!e) a: {
                    e = k;
                    h = e.slice(0);
                    for (f = 0; f < e.length; f++) {
                        c = e[f % e.length];
                        m = e[(f + 1) % e.length];
                        n = m.x - c.x;
                        l = m.y - c.y;
                        b = Math.sqrt(n * n + l * l);
                        n = d * n / b;
                        b = d * l / b;
                        l = c.x - b;
                        c = c.y + n;
                        b = m.x - b;
                        m = m.y + n;
                        if (0 != h.length) {
                            q = l - b;
                            p = c - m;
                            n = [];
                            r = s = !0;
                            u = void 0;
                            for (u = 0; u < h.length; u++) {
                                var v = q * (c - h[u].y) - (l - h[u].x) * p;
                                v <= g && v >= -g && (v = 0);
                                n.push(v);
                                0 < v && (s = !1);
                                0 > v && (r = !1)
                            }
                            if (s) h = [];
                            else if (!r) {
                                q = [];
                                for (u = 0; u < h.length; u++) p = (u + 1) % h.length,
                                s = n[u],
                                r = n[p],
                                0 <= s && q.push(h[u]),
                                (0 < s && 0 > r || 0 > s && 0 < r) && q.push(a(h[u].x, h[u].y, h[p].x, h[p].y, l, c, b, m));
                                h = q
                            }
                        }
                        if (3 > h.length) {
                            e = void 0;
                            break a
                        }
                    }
                    e = h
                }
            }
            return e
        };
        return this
    };
    var ya = new
    function() {
        function a(a) {
            for (var k = a[0].x, d = a[0].y, e = k, f = d, h = 1; h < a.length; h++) var l = a[h],
            k = Math.min(k, l.x),
            d = Math.min(d, l.y),
            e = Math.max(e, l.x),
            f = Math.max(f, l.y);
            a = e - k;
            f = f - d;
            return [{
                x: k + 2 * a,
                y: d + 2 * f,
                e: 0
            },
            {
                x: k + 2 * a,
                y: d - 2 * f,
                e: 0
            },
            {
                x: k - 2 * a,
                y: d + 2 * f,
                e: 0
            }]
        }
        this.n = function(g, k) {
            function d() {
                for (c = 0; c < r.length; c++) {
                    var a = r[c],
                    b = a.S,
                    f = b[0],
                    e = b[1],
                    d = b[2],
                    b = f.x,
                    h = f.y,
                    f = f.z,
                    l = e.x,
                    g = e.y,
                    e = e.z,
                    m = d.x,
                    n = d.y,
                    d = d.z,
                    k = b * (g - n) + l * (n - h) + m * (h - g);
                    a.oa = {
                        x: -(h * (e - d) + g * (d - f) + n * (f - e)) / k / 2,
                        y: -(f * (l - m) + e * (m - b) + d * (b - l)) / k / 2
                    }
                }
            }
            function e(a) {
                for (c = 0; c < r.length; c++) {
                    var b = r[c];
                    b.Ta = !K.Ga(a, b.oa)
                }
            }
            function f(a, b) {
                var c = Array(b.length),
                f;
                for (f = 0; f < c.length; f++) c[f] = [];
                for (f = 0; f < a.length; f++) {
                    var e = a[f];
                    if (! (0 > e.ta.z)) for (var d = e.D,
                    h = 0; h < d.length; h++) {
                        var l = d[h];
                        if (! (0 > l.ta.z)) {
                            var g = e.S,
                            m = g[(h + 1) % 3].index,
                            g = g[h].index;
                            2 < m && c[m - 3].push([e, l, 2 < g ? b[g - 3] : null])
                        }
                    }
                }
                return c
            }
            function h(a) {
                var b = [a[0]],
                c = a[0][0],
                f = a[0][1],
                e = a.length,
                d = 1;
                a: for (; d < e; d++) for (var h = 1; h < e; h++) {
                    var l = a[h];
                    if (null !== l) {
                        if (l[1] === c) if (b.unshift(l), c = l[0], a[h] = null, b.length === e) break a;
                        else continue;
                        if (l[0] === f && (b.push(l), f = l[1], a[h] = null, b.length === e)) break a
                    }
                }
                b[0][0] != b[e - 1][1] && b.push([b[e - 1][1], b[0][0]]);
                return b
            }
            function l(a, b, c, f) {
                var e = [],
                d = [],
                h = c.length,
                l,
                g = b.length,
                m = 0,
                n = -1,
                k = -1,
                p = -1,
                r = null,
                s = f;
                for (f = 0; f < h; f++) {
                    var u = (s + 1) % h,
                    q = c[s][0],
                    E = c[u][0];
                    if (q.Ta && E.Ta) {
                        var O = [],
                        P = [];
                        for (l = 0; l < g; l++) {
                            n = (m + 1) % g;
                            if (r = K.ma(b[m], b[n], q.oa, E.oa, !1)) if (P.push(m), 2 === O.push(r)) break;
                            m = n
                        }
                        if (2 === O.length) {
                            r = O[1];
                            n = K.c(q.oa, O[0]);
                            r = K.c(q.oa, r);
                            q = n < r ? 0 : 1;
                            n = n < r ? 1 : 0;
                            r = P[q]; - 1 === k && (k = r);
                            if ( - 1 !== p) for (; r != p;) p = (p + 1) % g,
                            e.push(b[p]),
                            d.push(null);
                            e.push(O[q], O[n]);
                            d.push(c[s][2], null);
                            p = P[n]
                        }
                    } else if (q.Ta && !E.Ta) for (l = 0; l < g; l++) {
                        n = (m + 1) % g;
                        if (r = K.ma(b[m], b[n], q.oa, E.oa, !1)) {
                            e.push(r);
                            d.push(c[s][2]); - 1 === k && (k = m);
                            break
                        }
                        m = n
                    } else if (!q.Ta && E.Ta) for (l = 0; l < g; l++) {
                        n = (m + 1) % g;
                        if (r = K.ma(b[m], b[n], q.oa, E.oa, !1)) {
                            e.push(q.oa, r);
                            d.push(c[s][2], null);
                            p = m;
                            break
                        }
                        m = n
                    } else e.push(q.oa),
                    d.push(c[s][2]);
                    s = u
                }
                if (0 == e.length) d = e = null;
                else if ( - 1 !== p) for (; k != p;) p = (p + 1) % g,
                e.push(b[p]),
                d.push(null);
                a.u = e;
                a.D = d
            }
            if (1 === g.length) g[0].u = k.slice(0),
            g[0].D = [];
            else {
                var c, b;
                b = a(k);
                var m = [],
                n;
                for (c = 0; c < b.length; c++) n = b[c],
                m.push({
                    x: n.x,
                    y: n.y,
                    z: n.x * n.x + n.y * n.y - n.e
                });
                for (c = 0; c < g.length; c++) n = g[c],
                n.u = null,
                m.push({
                    x: n.x,
                    y: n.y,
                    z: n.x * n.x + n.y * n.y - n.e
                });
                var r = wa.n(m).sd;
                d();
                e(k);
                m = f(r, g);
                for (c = 0; c < g.length; c++) if (n = m[c], 0 !== n.length) {
                    var p = g[c];
                    n = h(n);
                    var s = n.length,
                    u = -1;
                    for (b = 0; b < s; b++) n[b][0].Ta && (u = b);
                    if (0 <= u) l(p, k, n, u);
                    else {
                        var u = [],
                        q = [];
                        for (b = 0; b < s; b++) u.push(n[b][0].oa),
                        q.push(n[b][2]);
                        p.u = u;
                        p.D = q
                    }
                }
            }
        };
        this.Vb = function(g, k) {
            var d, e, f = !1,
            h = g.length;
            for (e = 0; e < h; e++) d = g[e],
            null === d.u && (f = !0),
            d.ed = d.e;
            if (f) {
                var f = a(k),
                l = [],
                c,
                b;
                e = g.length;
                for (d = 0; d < f.length; d++) c = f[d],
                l.push({
                    x: c.x,
                    y: c.y,
                    z: c.x * c.x + c.y * c.y
                });
                for (d = 0; d < e; d++) c = g[d],
                l.push({
                    x: c.x,
                    y: c.y,
                    z: c.x * c.x + c.y * c.y
                });
                c = wa.n(l).sd;
                f = Array(e);
                for (d = 0; d < e; d++) f[d] = {};
                l = c.length;
                for (d = 0; d < l; d++) if (b = c[d], 0 < b.ta.z) {
                    var m = b.S,
                    n = m.length;
                    for (b = 0; b < n - 1; b++) {
                        var r = m[b].index - 3,
                        p = m[b + 1].index - 3;
                        0 <= r && 0 <= p && (f[r][p] = !0, f[p][r] = !0)
                    }
                    b = m[0].index - 3;
                    0 <= p && 0 <= b && (f[p][b] = !0, f[b][p] = !0)
                }
                for (d = 0; d < e; d++) {
                    b = f[d];
                    c = g[d];
                    var p = Number.MAX_VALUE,
                    l = null,
                    s;
                    for (s in b) b = g[s],
                    m = K.c(c, b),
                    p > m && (p = m, l = b);
                    c.Lg = l;
                    c.Zd = Math.sqrt(p)
                }
                for (e = 0; e < h; e++) d = g[e],
                s = Math.min(Math.sqrt(d.e), 0.95 * d.Zd),
                d.e = s * s;
                this.n(g, k);
                for (e = 0; e < h; e++) d = g[e],
                d.ed !== d.e && 0 < d.Sb && (s = Math.min(d.Sb, d.ed - d.e), d.e += s, d.Sb -= s)
            }
        }
    };
    var $ = new
    function() {
        this.df = function(a) {
            a = a.f;
            for (var g = 0,
            k = a.length,
            d = 0; d < k; d++) {
                var e = a[d];
                if (e.u) {
                    var f = e.x,
                    h = e.y;
                    K.k(e.u, e);
                    f = f - e.x;
                    e = h - e.y;
                    e = (0 < f ? f: -f) + (0 < e ? e: -e);
                    g < e && (g = e)
                }
            }
            return g
        };
        this.ha = function(a, g) {
            var k = a.f,
            d, e, f, h;
            switch (g) {
            case "random":
                return a.f[Math.floor(k.length * Math.random())];
            case "topleft":
                d = k[0];
                var l = d.x + d.y;
                for (h = 1; h < k.length; h++) e = k[h],
                f = e.x + e.y,
                f < l && (l = f, d = e);
                return d;
            case "bottomright":
                d = k[0];
                l = d.x + d.y;
                for (h = 1; h < k.length; h++) e = k[h],
                f = e.x + e.y,
                f > l && (l = f, d = e);
                return d;
            default:
                d = k[0];
                f = e = K.c(a, d);
                for (h = k.length - 1; 1 <= h; h--) l = k[h],
                e = K.c(a, l),
                e < f && (f = e, d = l);
                return d
            }
        };
        this.qa = function(a, g, k) {
            var d = a.f,
            e = d.length;
            for (a = 0; a < e; a++) d[a].sc = !1,
            d[a].zb = 0;
            var e = [],
            f,
            h;
            h = f = 0;
            e[f++] = g || d[0];
            for (g = g.zb = 0; h < f;) if (d = e[h++], !d.sc) {
                k(d, g++, d.zb);
                d.sc = !0;
                var l = d.D,
                c = l.length;
                for (a = 0; a < c; a++) {
                    var b = l[a];
                    b && !0 !== b.sc && (0 === b.zb && (b.zb = d.zb + 1), e[f++] = b)
                }
            }
        }
    };
    var za = function() {
        function a(a, f) {
            var e = void 0 !== a.fontFamily ? a.fontFamily: h.fontFamily,
            d = l[e];
            void 0 === d && (d = {},
            l[e] = d);
            f.save();
            f.font = v + "px " + e;
            d[c] = f.measureText(c).width;
            d[b] = f.measureText(b).width;
            f.restore()
        }
        function g(a, b, c) {
            var f, e = b.text.split(/([ \f\n\r\t\v\u2028\u2029]+|\u00ad+|\u200b+)/),
            d = [],
            h = [],
            g = e.length >>> 1;
            for (f = 0; f < g; f++) d.push(e[2 * f]),
            h.push(e[2 * f + 1]);
            2 * f < e.length && (d.push(e[2 * f]), h.push(void 0));
            e = l[c];
            for (f = 0; f < d.length; f++) {
                var g = d[f],
                m = e[g];
                void 0 === m && (a.font = v + "px " + c, m = a.measureText(g).width, e[g] = m)
            }
            b.fd = d;
            b.Oe = h
        }
        function k(a) {
            for (var b = a.text.split(/\s+/), f = [], e = {
                ".": !0,
                ",": !0,
                ";": !0,
                "?": !0,
                "!": !0,
                ":": !0,
                "\u3002": !0
            },
            d = 0; d < b.length; d++) {
                var h = b[d];
                if (3 < h.length) {
                    for (var l = "",
                    l = l + h.charAt(0), l = l + h.charAt(1), g = 2; g < h.length - 2; g++) {
                        var n = h.charAt(g);
                        e[n] || (l += m);
                        l += n
                    }
                    l += m;
                    l += h.charAt(h.length - 2);
                    l += h.charAt(h.length - 1);
                    f.push(l)
                } else f.push(h)
            }
            a.text = f.join(c)
        }
        function d(a, b, c, f) {
            for (var e, d, h = 0; h < a.length; h++) a[h].y === b.y && (void 0 === e ? e = h: d = h);
            void 0 === d && (d = e);
            e !== d && a[d].x < a[e].x && (h = e, e = d, d = h);
            f.u = a;
            f.C = b;
            f.Ac = c;
            f.Xd = e;
            f.Yd = d
        }
        function e(a, b, c, e, d, l, g) {
            var m = void 0 !== a.lineHeight ? a.lineHeight: h.lineHeight,
            n = void 0 !== a.Rb ? a.Rb: h.Rb,
            p = void 0 !== a.Gb ? a.Gb: h.Gb,
            k = b.fd,
            r = c.Ac,
            s = c.C,
            q = void 0,
            u = void 0,
            p = Math.min(2 * Math.min(r.y - s.y, s.y + s.j - r.y), p * c.C.j);
            if (0 >= p) g.wb = !1;
            else {
                r = e;
                d = Math.min(d, p);
                do {
                    var s = (r + d) / 2, v = Math.min(k.length, Math.floor((p + s * (m - 1 - 2 * n)) / (s * m))), E = void 0;
                    if (0 < v) {
                        var O = 1,
                        P = v;
                        do {
                            var U = Math.floor((O + P) / 2);
                            if (f(a, b, U, s, c, l && s === e && U === v, null, null)) {
                                if (P = q = E = U, O === P) break
                            } else if (O = U + 1, O > P) break
                        } while ( 1 )
                    }
                    void 0 !== E ? r = u = s: d = s
                } while ( 1 < d - r );
                void 0 === u ? g.wb = !1 : (g.wb = !0, g.fontSize = u, g.Vd = q, g.Cf = l && s === r)
            }
        }
        function f(a, f, e, d, g, m, k, s) {
            var q = void 0 !== a.Ab ? a.Ab: h.Ab,
            u = d * ((void 0 !== a.lineHeight ? a.lineHeight: h.lineHeight) - 1);
            a = l[void 0 !== a.fontFamily ? a.fontFamily: h.fontFamily];
            var M = f.fd;
            f = f.Oe;
            var D = g.u,
            C = g.Ac,
            L = g.Xd,
            Q = g.Yd,
            I = C.y - (d * (e - 1) / 2 + u * (e - 1) / 2);
            g = I;
            for (var E = 0; E < e; E++) n[2 * E] = I - d / 2,
            n[2 * E + 1] = I + d / 2,
            I += d,
            I += u;
            for (; r.length < n.length;) r.push(Array(2));
            for (var E = n,
            I = 2 * e,
            O = r,
            P = D.length,
            U = L,
            L = (L - 1 + P) % P, Y = Q, Q = (Q + 1) % P, aa = 0; aa < I;) {
                for (var da = E[aa], ea = D[L]; ea.y < da;) U = L,
                L = (L - 1 + P) % P,
                ea = D[L];
                for (var Z = D[Q]; Z.y < da;) Y = Q,
                Q = (Q + 1) % P,
                Z = D[Q];
                var fa = D[U],
                ga = D[Y],
                Z = ga.x + (Z.x - ga.x) * (da - ga.y) / (Z.y - ga.y);
                O[aa][0] = fa.x + (ea.x - fa.x) * (da - fa.y) / (ea.y - fa.y);
                O[aa][1] = Z;
                aa++
            }
            for (E = 0; E < e; E++) D = 2 * E,
            I = C.x,
            O = I - r[D][0],
            P = r[D][1] - I,
            O = O < P ? O: P,
            P = I - r[D + 1][0],
            D = r[D + 1][1] - I,
            D = P < D ? P: D,
            p[E] = 2 * (O < D ? O: D) - q * d;
            P = a[c] * d / v;
            I = a[b] * d / v;
            q = 0;
            U = p[q];
            L = 0;
            C = void 0;
            for (E = 0; E < M.length; E++) {
                D = M[E];
                Y = f[E];
                O = a[D] * d / v;
                if (L + O < U && M.length - E >= e - q) L += O,
                " " === Y && (L += P),
                k && k(D, C);
                else {
                    if (O > U && (q !== e - 1 || !m)) return ! 1;
                    if (q + 1 >= e) {
                        if (m) {
                            e = U - L - I;
                            if (e > I || O > I) e = Math.floor(D.length * e / O),
                            0 < e && k && k(D.substring(0, e), C);
                            k && k(b, void 0);
                            s && s(q, g, D, C);
                            return ! 0
                        }
                        return ! 1
                    }
                    q++;
                    s && s(q, g, D, C);
                    g += d;
                    g += u;
                    U = p[q];
                    L = O;
                    " " === Y && (L += P);
                    if (O > U && (q !== e || !m)) return ! 1
                }
                C = Y
            }
            s && s(q, g);
            return ! 0
        }
        var h = {
            Fb: 72,
            lineHeight: 1.05,
            Ab: 1,
            Rb: 0.5,
            Gb: 0.9,
            fontFamily: "sans-serif"
        },
        l = {},
        c = " ",
        b = "\u2026",
        m = "\u200b",
        n = [],
        r = [],
        p = [],
        s = {
            text: "",
            fd: void 0,
            Oe: void 0
        },
        u = {
            u: void 0,
            C: void 0,
            Ac: void 0,
            Xd: 0,
            Yd: 0
        },
        q = {
            wb: !1,
            Vd: 0,
            fontSize: 0
        },
        v = 100;
        return {
            ud: function(b, l, m, n, p, r, v, t, A, R) {
                a(b, l);
                var M = void 0 !== b.Fb ? b.Fb: h.Fb,
                D = void 0 !== b.fontFamily ? b.fontFamily: h.fontFamily;
                s.text = n;
                d(p, r, v, u);
                l.save();
                /[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]/.test(n) ? (k(s), g(l, s, D), e(b, s, u, t, M, !0, q)) : (g(l, s, D), e(b, s, u, t, M, !1, q), q.wb || (A && (k(s), g(l, s, D)), (R || A) && e(b, s, u, t, t, !0, q)));
                l.restore();
                if (!q.wb) return 0;
                m.font = q.fontSize + "px " + D;
                m.textBaseline = "middle";
                m.textAlign = "center";
                var C = "";
                f(b, s, q.Vd, q.fontSize, u, q.Cf,
                function(a, b) {
                    0 < C.length && b === c && (C += c);
                    C += a
                },
                function(a, b, c, f) {
                    "\u00ad" === f && (C += "\u2010");
                    m.fillText(C, v.x, b);
                    C = c
                });
                return q.fontSize
            }
        }
    } ();
    var Aa = new
    function() {
        this.nf = function(a, g) {
            function k(a, b, c, f, d) {
                if (0 != a.length) {
                    var h = a.shift(),
                    l = e(h),
                    g,
                    m,
                    n,
                    F;
                    if (f < d) {
                        g = b;
                        l = l / f;
                        do {
                            m = h.shift();
                            n = m.za;
                            F = n / l;
                            n = c;
                            var G = l;
                            m.x = g + F / 2;
                            m.y = n + G / 2;
                            g += F
                        } while ( 0 < h . length );
                        return k(a, b, c + l, f, d - l)
                    }
                    g = c;
                    F = l / d;
                    do m = h.shift(),
                    n = m.za,
                    l = n / F,
                    n = g,
                    G = l,
                    m.x = b + F / 2,
                    m.y = n + G / 2,
                    g += l;
                    while (0 < h.length);
                    return k(a, b + F, c, f - F, d)
                }
            }
            function d(a, b, c, f) {
                function l(a, b) {
                    for (var c = e(a), c = c * c, f = b * b, d = Math.max(f * a[0].za / c, c / (f * a[0].za)), h = 1; h < a.length; h++) d = Math.max(d, Math.max(f * a[h].za / c, c / (f * a[h].za)));
                    return d
                }
                if (0 != a.length) {
                    var h = f[f.length - 1],
                    g = b < c ? b: c,
                    m = b < c ? c: b,
                    n = a.shift(),
                    k = l(h, g);
                    h.push(n);
                    var F = l(h, g);
                    k >= F ? d(a, b, c, f) : (h.pop(), f.push([n]), d(a, g, m - e(h) / g, f));
                    return f
                }
            }
            function e(a) {
                for (var b = 0,
                c = 0; c < a.length; c++) b += a[c].za;
                return b
            }
            var f = g.x,
            h = g.y,
            l = g.e,
            c = g.j;
            if (0 != a.length) if (1 == a.length) a[0].x = f + l / 2,
            a[0].y = h + c / 2,
            a[0].Dg = 0;
            else {
                for (var b = a.slice(0), m = 0, n = 0; n < b.length; n++) m += b[n].da;
                m = l * c / m;
                for (n = 0; n < b.length; n++) b[n].za = b[n].da * m;
                b.sort(function(a, b) {
                    return b.za - a.za
                });
                for (n = 0; n < b.length; n++) b[n].Dg = n;
                b = d(b, l, c, [[b.shift()]]);
                k(b, f, h, l, c)
            }
        }
    };
    function Ba(a) {
        var g = {},
        k = a.Mg,
        d;
        a.d.i("model:loaded",
        function(a) {
            d = a
        });
        this.q = function() {
            a.d.p("api:initialized", this)
        };
        this.zc = function(a, f, d, l) {
            this.k(g, f);
            this.n(g, f);
            this.c(g, f, !1);
            l && l(g);
            a(k, g, d)
        };
        this.yc = function(a, f, h, l, c, b, g) {
            if (a) {
                for (a = f.length - 1; 0 <= a; a--) {
                    var n = f[a],
                    k = J.extend({
                        group: n.group
                    },
                    c);
                    k[h] = l(n);
                    b(k)
                }
                0 < f.length && g(J.extend({
                    groups: X.Cc(d, l).map(function(a) {
                        return a.group
                    })
                },
                c))
            }
        };
        this.n = function(a, f) {
            a.selected = f.selected;
            a.hovered = f.$a;
            a.open = f.open;
            a.openness = f.fb;
            a.exposed = f.M;
            a.exposure = f.T;
            a.transitionProgress = f.ba;
            a.revealed = !f.va.Pa();
            a.visible = f.R;
            a.labelDrawn = !f.Qa.Pa();
            return a
        };
        this.k = function(a, f) {
            var d = f.parent;
            a.group = f.group;
            a.parent = d && d.group;
            a.weightNormalized = f.Ze;
            a.level = f.la - 1;
            a.siblingCount = d && d.f.length;
            a.hasChildren = !f.empty();
            a.index = f.index;
            return a
        };
        this.c = function(a, f, d) {
            a.polygonCenterX = f.ra.x;
            a.polygonCenterY = f.ra.y;
            a.polygonArea = f.ra.ea;
            a.boxWidth = f.C.e;
            a.boxHeight = f.C.j;
            if (d && f.aa) {
                d = [];
                f = f.aa;
                for (var l = f.length - 1; 0 <= l; l--) {
                    var c = f[l];
                    d.push({
                        x: c.x,
                        y: c.y
                    })
                }
                a.polygon = d
            }
            return a
        }
    };
    var la = new
    function() {
        var a = window.console;
        this.ia = function(a) {
            throw "FoamTree: " + a;
        };
        this.info = function(g) {
            a.info("FoamTree: " + g)
        };
        this.warn = function(g) {
            a.warn("FoamTree: " + g)
        }
    };
    function Ca(a) {
        var g = this,
        k = new Da,
        d, e;
        this.q = function() {
            return k
        };
        this.J = function(f) {
            function h(b, c) {
                b.f = [];
                b.Ja = !0;
                var f = c.reduce(function(a, b) {
                    var c = b.weight;
                    return 0 < c ? Math.min(a, c) : a
                },
                Number.MAX_VALUE);
                f === Number.MAX_VALUE && (f = 1);
                for (var d = 0; d < c.length; d++) {
                    var e = c[d],
                    g = J.ya(e.weight, 1);
                    if (0 >= g) if (a.Nh) g = 0.9 * f;
                    else continue;
                    var m = l(e);
                    m.da = g;
                    m.index = d;
                    m.parent = b;
                    m.la = b.la + 1;
                    e.groups && 0 < e.groups.length && h(m, e.groups);
                    b.f.push(m)
                }
            }
            function l(a) {
                var b = new Da;
                c(a);
                b.id = a.__id;
                b.group = a;
                d[a.__id] = b;
                a.id && (e[a.id] = b);
                return b
            }
            function c(a) {
                J.Q(a, "__id") || (Object.defineProperty(a, "__id", {
                    enumerable: !1,
                    configurable: !1,
                    writable: !1,
                    value: g
                }), g++)
            }
            function b(a, c) {
                if (!a) return c;
                var f = Math.max(c, a.__id || 0),
                d = a.groups;
                if (d && 0 < d.length) for (var e = d.length - 1; 0 <= e; e--) f = b(d[e], f);
                return f
            }
            k.group = f;
            k.wa = !1;
            k.Y = !1;
            k.Jb = !1;
            k.open = !0;
            k.fb = 1;
            var g = b(f, 0) + 1;
            d = {};
            f && (c(f), d[f.__id] = k);
            e = {};
            h(k, f && f.groups || []); (function(a) {
                if (!a.empty()) {
                    var b = l({
                        attribution: !0
                    }),
                    c = a.f.reduce(function(a, b) {
                        return a + b.da
                    },
                    0);
                    b.da = 0.025 * c;
                    b.index = a.f.length;
                    b.parent = a;
                    b.la = a.la + 1;
                    b.Aa = !0;
                    a.f.push(b)
                }
            })(k); (function(a) {
                X.Na(a,
                function(a) {
                    if (!a.empty()) {
                        a = a.f;
                        for (var b = a.reduce(function(a, b) {
                            return Math.max(a, b.da)
                        },
                        0), c = a.length - 1; 0 <= c; c--) {
                            var f = a[c];
                            f.Ze = f.da / b
                        }
                    }
                })
            })(k)
        };
        this.n = function(a) {
            return function() {
                if (J.Z(a) || J.Td(a)) return [];
                if (J.bb(a)) return [g.c(a)];
                if (Array.isArray(a)) return a.map(g.c);
                if (J.Bb(a)) {
                    if (J.Q(a, "all")) {
                        var d = [];
                        X.A(k,
                        function(a) {
                            d.push(a)
                        });
                        return d
                    }
                    if (J.Q(a, "__id")) return [g.c(a)];
                    if (J.Q(a, "groups")) return g.n(a.groups)
                }
                return []
            } ().filter(function(a) {
                return void 0 !== a
            })
        };
        this.c = function(a) {
            if (J.bb(a)) return e[a];
            if (J.Bb(a)) return d[a.__id]
        };
        this.k = function(a, d, e) {
            return {
                f: g.n(a),
                na: J.ya(a && a[d], !0),
                ja: J.ya(a && a.keepPrevious, e)
            }
        }
    }
    function Ea(a, g, k) {
        var d = {};
        g.ja && X.A(a,
        function(a) {
            k(a) && (d[a.id] = a)
        });
        a = g.f;
        g = g.na;
        for (var e = a.length - 1; 0 <= e; e--) {
            var f = a[e];
            d[f.id] = g ? f: void 0
        }
        var h = [];
        J.pa(d,
        function(a) {
            void 0 !== a && h.push(a)
        });
        return h
    };
    function Fa(a) {
        function g(a, b) {
            var c = a.T;
            b.opacity = 1;
            b.sa = 1;
            b.$ = 0 > c ? 1 - p.yg / 100 * c: 1;
            b.ca = 0 > c ? 1 - p.zg / 100 * c: 1;
            b.V = 0 > c ? 1 + 0.5 * c: 1
        }
        function k(a) {
            a = a.T;
            return Math.max(0.0010, 0 === a ? 1 : 1 + a * (p.Oa - 1))
        }
        function d(a, b) {
            for (var c = a.reduce(function(a, b) {
                a[b.id] = b;
                return a
            },
            {}), f = a.length - 1; 0 <= f; f--) X.A(a[f],
            function(a) {
                c[a.id] = void 0
            });
            var d = [];
            J.pa(c,
            function(a) {
                a && X.Bf(a,
                function(a) {
                    a.open || d.push(a)
                })
            });
            var e = [];
            J.pa(c,
            function(a) {
                a && a.open && e.push(a)
            });
            f = [];
            0 !== d.length && f.push(z.Sa({
                f: d,
                na: !0,
                ja: !0
            },
            b, !0));
            return (new T).F().K()
        }
        function e(d, e, g, k) {
            var n = l();
            if (0 === d.length && !n) return (new T).F().K();
            var r = d.reduce(function(a, b) {
                a[b.id] = !0;
                return a
            },
            {}),
            u = [];
            d = [];
            if (y.reduce(function(a, b) {
                return a || r[b.id] && (!b.M || 1 !== b.T) || !r[b.id] && !b.parent.M && (b.M || -1 !== b.T)
            },
            !1)) {
                var z = [],
                t = {};
                y.forEach(function(a) {
                    r[a.id] && (a.M || u.push(a), a.M = !0, X.Na(a,
                    function(a) {
                        z.push(b(a, 1));
                        t[a.id] = !0
                    }))
                });
                0 < z.length ? (X.A(s,
                function(a) {
                    r[a.id] || (a.M && u.push(a), a.M = !1);
                    t[a.id] || z.push(b(a, -1))
                }), d.push(x.w.m({}).Fa(z).call(m).Ha()), f(r), d.push(h(n)), g && (v.Nb(B, p.ec, p.Ba, W.W(p.vb)), v.hb())) : (d.push(c(g)), e && X.A(s,
                function(a) {
                    a.M && u.push(a)
                }))
            }
            return V(d).H(function() {
                q.yc(e, u, "exposed",
                function(a) {
                    return a.M
                },
                {
                    indirect: k
                },
                a.options.he, a.options.ge)
            })
        }
        function f(a) {
            y.reduce(n(!0, void 0,
            function(b) {
                return b.M || a[b.id]
            }), r(B));
            B.x -= B.e * (p.Oa - 1) / 2;
            B.y -= B.j * (p.Oa - 1) / 2;
            B.e *= p.Oa;
            B.j *= p.Oa
        }
        function h(b) {
            if (b || !v.Qc()) return x.w.m(u).O({
                duration: 0.7 * p.Ba,
                B: {
                    x: {
                        end: B.x + B.e / 2,
                        I: W.W(p.vb)
                    },
                    y: {
                        end: B.y + B.j / 2,
                        I: W.W(p.vb)
                    }
                },
                N: function() {
                    a.d.p("foamtree:dirty", !0)
                }
            }).Ha();
            u.x = B.x + B.e / 2;
            u.y = B.y + B.j / 2;
            return (new T).F().K()
        }
        function l() {
            return !! y && y.reduce(function(a, b) {
                return a || 0 !== b.T
            },
            !1)
        }
        function c(a) {
            var c = [],
            f = [];
            X.A(s,
            function(a) {
                0 !== a.T && f.push(b(a, 0,
                function() {
                    this.M = !1
                }))
            });
            c.push(x.w.m({}).Fa(f).Ha());
            v.content(0, 0, F, G);
            a && (c.push(v.reset(p.Ba, W.W(p.vb))), v.hb());
            return V(c)
        }
        function b(b, c, f) {
            var d = x.w.m(b);
            0 === b.T && 0 !== c && d.call(function() {
                this.Xb(N);
                this.nb(g)
            });
            d.O({
                duration: p.Ba,
                B: {
                    T: {
                        end: c,
                        I: W.W(p.vb)
                    }
                },
                N: function() {
                    s.G = !0;
                    s.Wa = !0;
                    a.d.p("foamtree:dirty", !0)
                }
            });
            0 === c && d.call(function() {
                this.Nc();
                this.hc();
                this.oc(N);
                this.Xc(g)
            });
            return d.call(f).ga()
        }
        function m() {
            var a = s.f.reduce(n(!1, N.Ob, void 0), r({})).rb,
            b = p.ec,
            c = Math.min(a.x, B.x - B.e * b),
            f = Math.max(a.x + a.e, B.x + B.e * (1 + b)),
            d = Math.min(a.y, B.y - B.j * b),
            a = Math.max(a.y + a.j, B.y + B.j * (1 + b));
            v.content(c, d, f - c, a - d)
        }
        function n(a, b, c) {
            var f = {};
            return function(d, e) {
                if (!c || c(e)) {
                    for (var l = a ? e.aa || e.u: e.u, h, g = l.length - 1; 0 <= g; g--) h = void 0 !== b ? b(e, l[g], f) : l[g],
                    d.jc = Math.min(d.jc, h.x),
                    d.Oc = Math.max(d.Oc, h.x),
                    d.kc = Math.min(d.kc, h.y),
                    d.Pc = Math.max(d.Pc, h.y);
                    d.rb.x = d.jc;
                    d.rb.y = d.kc;
                    d.rb.e = d.Oc - d.jc;
                    d.rb.j = d.Pc - d.kc
                }
                return d
            }
        }
        function r(a) {
            return {
                jc: Number.MAX_VALUE,
                Oc: Number.MIN_VALUE,
                kc: Number.MAX_VALUE,
                Pc: Number.MIN_VALUE,
                rb: a
            }
        }
        var p = a.options,
        s, u, q, v, x, z, y, B, F, G, N = {
            Wd: function(a, b) {
                b.scale = k(a);
                return ! 1
            },
            lb: function(a, b) {
                var c = k(a),
                d = u.x,
                f = u.y;
                b.translate(d, f);
                b.scale(c, c);
                b.translate( - d, -f)
            },
            Pb: function(a, b, c) {
                a = k(a);
                var d = u.x,
                f = u.y;
                c.x = (b.x - d) / a + d;
                c.y = (b.y - f) / a + f
            },
            Ob: function(a, b, c) {
                a = k(a);
                var d = u.x,
                f = u.y;
                c.x = (b.x - d) * a + d;
                c.y = (b.y - f) * a + f;
                return c
            }
        };
        a.d.i("stage:initialized",
        function(a, b, c, d) {
            u = {
                x: c / 2,
                y: d / 2
            };
            F = c;
            G = d;
            B = {
                x: 0,
                y: 0,
                e: F,
                j: G
            }
        });
        a.d.i("stage:resized",
        function(a, b, c, d) {
            u.x *= c / a;
            u.y *= d / b;
            F = c;
            G = d
        });
        a.d.i("api:initialized",
        function(a) {
            q = a
        });
        a.d.i("zoom:initialized",
        function(a) {
            v = a
        });
        a.d.i("model:loaded",
        function(a, b) {
            s = a;
            y = b
        });
        a.d.i("timeline:initialized",
        function(a) {
            x = a
        });
        a.d.i("openclose:initialized",
        function(a) {
            z = a
        });
        var t = ["groupExposureScale", "groupUnexposureScale", "groupExposureZoomMargin"];
        a.d.i("options:changed",
        function(a) {
            J.Za(a, t) && l() && (f({}), v.Uh(B, p.ec), v.hb())
        });
        this.q = function() {
            a.d.p("expose:initialized", this)
        };
        this.ub = function(a, b, c, f) {
            var l = a.f.reduce(function(a, b) {
                for (var c = b; c = c.parent;) a[c.id] = !0;
                return a
            },
            {}),
            h = Ea(s, a,
            function(a) {
                return a.M && !a.open && !l[a.id]
            }),
            h = h.filter(function(a) {
                return a.u && a.aa
            }),
            g = new T;
            d(h, b).H(function() {
                e(h, b, c, f).H(g.F)
            });
            return g.K()
        }
    };
    function Ga(a) {
        function g(c) {
            function b(a, b) {
                var c = Math.min(1, Math.max(0, a.ba));
                b.opacity = c;
                b.$ = 1;
                b.ca = c;
                b.sa = c;
                b.V = a.Db
            }
            var e = a.options,
            g = e.Ih,
            k = e.Jh,
            p = e.Fh,
            s = e.Gh,
            u = e.Hh,
            q = e.Zc,
            v = g + k + p + s + u,
            x = 0 < v ? q / v: 0,
            z = [];
            l.Ua(e.Ke, e.Je, e.Le, e.Me, e.Ie);
            if (c.f && c.Y) {
                $.qa(c, $.ha(c, a.options.ad),
                function(c, f, q) {
                    c.Xb(l);
                    c.nb(b);
                    q = "groups" === a.options.$c ? q: f;
                    f = d.w.m(c).Ia(q * x * g).O({
                        duration: x * k,
                        B: {
                            ba: {
                                end: 1,
                                I: W.W(e.Eh)
                            }
                        },
                        N: function() {
                            this.G = !0;
                            a.d.p("foamtree:dirty", 0 < x)
                        }
                    }).ga();
                    q = d.w.m(c).Ia(h ? x * (p + q * s) : 0).O({
                        duration: h ? x * u: 0,
                        B: {
                            Db: {
                                end: 1,
                                I: W.cb
                            }
                        },
                        N: function() {
                            this.G = !0;
                            a.d.p("foamtree:dirty", 0 < x)
                        }
                    }).ga();
                    c = d.w.m(c).Fa([f, q]).dd().Ka(function() {
                        this.Nc();
                        this.hc();
                        this.oc(l);
                        this.Xc(b)
                    }).ga();
                    z.push(c)
                });
                f.c();
                var y = new T;
                d.w.m({}).Fa(z).call(function() {
                    f.k();
                    y.F()
                }).start();
                return y.K()
            }
            return (new T).F().K()
        }
        var k, d, e = [],
        f = new na(J.Ra);
        a.d.i("stage:initialized",
        function() {});
        a.d.i("stage:resized",
        function() {});
        a.d.i("stage:newLayer",
        function(a, b) {
            e.push(b)
        });
        a.d.i("model:loaded",
        function(a) {
            k = a;
            f.clear()
        });
        a.d.i("zoom:initialized",
        function() {});
        a.d.i("timeline:initialized",
        function(a) {
            d = a
        });
        var h = !1;
        a.d.i("render:renderers:resolved",
        function(a) {
            h = a.labelPlainFill || !1
        });
        var l = new
        function() {
            var a = 0,
            b = 0,
            d = 0,
            f = 0,
            e = 0,
            h = 0;
            this.Ua = function(l, g, k, v, x) {
                a = 1 + g;
                b = 1 - a;
                d = k;
                f = v;
                e = x;
                h = l
            };
            this.Wd = function(h, l) {
                l.scale = a + b * h.ba;
                return 0 !== e || 0 !== d || 0 !== f
            };
            this.lb = function(l, g) {
                var k = a + b * l.ba,
                v = l.parent,
                x = h * l.x + (1 - h) * v.x,
                z = h * l.y + (1 - h) * v.y;
                g.translate(x, z);
                g.scale(k, k);
                k = 1 - l.ba;
                g.rotate(e * Math.PI * k);
                g.translate( - x, -z);
                g.translate(v.C.e * d * k, v.C.j * f * k)
            };
            this.Pb = function(e, l, g) {
                var k = a + b * e.ba,
                r = h * e.x + (1 - h) * e.parent.x,
                z = h * e.y + (1 - h) * e.parent.y,
                y = 1 - e.ba;
                e = e.parent;
                g.x = (l.x - r) / k + r - e.C.e * d * y;
                g.y = (l.y - z) / k + z - e.C.j * f * y
            };
            this.Ob = function(e, l, g) {
                var k = a + b * e.ba,
                r = h * e.x + (1 - h) * e.parent.x,
                z = h * e.y + (1 - h) * e.parent.y,
                y = 1 - e.ba;
                e = e.parent;
                g.x = (l.x - r) * k + r - e.C.e * d * y;
                g.y = (l.y - z) * k + z - e.C.j * f * y
            }
        };
        this.q = function() {};
        this.k = function() {
            function c(a, b) {
                var c = Math.min(1, Math.max(0, a.ba));
                b.opacity = c;
                b.$ = 1;
                b.ca = c;
                b.sa = c;
                b.V = a.Db
            }
            function b(a, b) {
                var c = Math.min(1, Math.max(0, a.Uc));
                b.opacity = c;
                b.sa = c;
                b.$ = 1;
                b.ca = 1;
                b.V = a.Db
            }
            var e = a.options,
            g = e.Tc,
            r = e.ah,
            p = e.bh,
            s = e.dh,
            u = e.Xg,
            q = e.Yg,
            v = e.Zg,
            x = e.Tg,
            z = e.Ug,
            y = e.Vg,
            B = u + q + v + x + z + y + r + p + s,
            F = 0 < B ? g / B: 0,
            G = [];
            f.n() ? l.Ua(e.hh, e.fh, e.ih, e.jh, e.eh) : l.Ua(e.Ke, e.Je, e.Le, e.Me, e.Ie);
            $.qa(k, $.ha(k, a.options.gh),
            function(f, g, k) {
                var n = "groups" === a.options.$g ? k: g;
                G.push(d.w.m(f).call(function() {
                    this.nb(c)
                }).Ia(h ? F * (u + n * q) : 0).O({
                    duration: h ? F * v: 0,
                    B: {
                        Db: {
                            end: 0,
                            I: W.cb
                        }
                    },
                    N: function() {
                        this.G = !0;
                        a.d.p("foamtree:dirty", !0)
                    }
                }).ga());
                X.A(f,
                function(c) {
                    G.push(d.w.m(c).call(function() {
                        this.Xb(l);
                        this.nb(b)
                    }).Ia(F * (x + z * n)).O({
                        duration: F * y,
                        B: {
                            Uc: {
                                end: 0,
                                I: W.cb
                            }
                        },
                        N: function() {
                            this.G = !0;
                            a.d.p("foamtree:dirty", !0)
                        }
                    }).Ka(function() {
                        this.selected = !1;
                        this.oc(l)
                    }).ga())
                });
                G.push(d.w.m(f).call(function() {
                    this.Xb(l)
                }).Ia(F * (r + p * n)).O({
                    duration: F * s,
                    B: {
                        ba: {
                            end: 0,
                            I: W.W(e.Wg)
                        }
                    },
                    N: function() {
                        this.G = !0;
                        a.d.p("foamtree:dirty", !0)
                    }
                }).Ka(function() {
                    this.selected = !1;
                    this.oc(l)
                }).ga())
            });
            return d.w.m({}).Fa(G).Ha()
        };
        this.c = function(a) {
            return g(a)
        }
    };
    function Ha(a) {
        function g(a, b) {
            var d = [];
            X.A(h,
            function(b) {
                if (b.f) {
                    var f = J.Q(a, b.id);
                    b.open !== f && (f || b.M || X.A(b,
                    function(a) {
                        if (a.M) return d.push(b),
                        !1
                    }))
                }
            });
            if (0 === d.length) return (new T).F().K();
            var e;
            for (e = d.length - 1; 0 <= e; e--) d[e].open = !1;
            var g = f.ub({
                f: d,
                na: !0,
                ja: !0
            },
            b, !0, !0);
            for (e = d.length - 1; 0 <= e; e--) d[e].open = !0;
            return g
        }
        function k(c, b, f) {
            function g(b, c) {
                b.nb(k);
                var f = e.w.m(b).O({
                    duration: a.options.mc,
                    B: {
                        fb: {
                            end: c ? 1 : 0,
                            I: W.ld
                        }
                    },
                    N: function() {
                        this.G = !0;
                        a.d.p("foamtree:dirty", !0)
                    }
                }).call(function() {
                    this.open = c
                }).Ka(function() {
                    this.hc();
                    this.Xc(k);
                    delete d[this.id]
                }).ga();
                return d[b.id] = f
            }
            function k(a, b) {
                b.opacity = 1 - a.fb;
                b.$ = 1;
                b.ca = 1;
                b.V = 1;
                b.sa = 1
            }
            var p = [],
            s = [];
            X.A(h,
            function(a) {
                if (a.f) {
                    var b = J.Q(c, a.id),
                    f = d[a.id];
                    if (f && f.ab()) f.stop();
                    else if (a.open === b) return;
                    b || (a.open = b, a.Rc = !1);
                    s.push(a);
                    p.push(g(a, b))
                }
            });
            return 0 < p.length ? e.w.m({}).Fa(p).Ha().H(function() {
                l.yc(b, s, "open",
                function(a) {
                    return a.open
                },
                {
                    indirect: f
                },
                a.options.ne, a.options.me)
            }) : (new T).F().K()
        }
        var d, e, f, h, l;
        a.d.i("api:initialized",
        function(a) {
            l = a
        });
        a.d.i("model:loaded",
        function() {
            d = {}
        });
        a.d.i("timeline:initialized",
        function(a) {
            e = a
        });
        a.d.i("expose:initialized",
        function(a) {
            f = a
        });
        a.d.i("model:loaded",
        function(a) {
            h = a
        });
        this.q = function() {
            a.d.p("openclose:initialized", this)
        };
        this.Sa = function(a, b, d) {
            a = Ea(h, a,
            function(a) {
                return a.open
            });
            var f = new T,
            e = a.reduce(function(a, b) {
                a[b.id] = !0;
                return a
            },
            {});
            g(e, b).H(function() {
                k(e, b, d).H(f.F)
            });
            return f.K()
        }
    };
    function Ia(a) {
        function g(e, f) {
            var g = Ea(k, e,
            function(a) {
                return a.selected
            });
            X.A(k,
            function(a) { ! 0 === a.selected && (a.selected = !a.selected, a.G = !a.G)
            });
            var l;
            for (l = g.length - 1; 0 <= l; l--) {
                var c = g[l];
                c.selected = !c.selected;
                c.G = !c.G
            }
            var b = [];
            X.A(k,
            function(a) {
                a.G && b.push(a)
            });
            0 < b.length && a.d.p("foamtree:dirty", !1);
            d.yc(f, b, "selected",
            function(a) {
                return a.selected
            },
            {},
            a.options.pe, a.options.oe)
        }
        var k, d;
        a.d.i("api:initialized",
        function(a) {
            d = a
        });
        a.d.i("model:loaded",
        function(a) {
            k = a
        });
        this.q = function() {
            a.d.p("select:initialized", this)
        };
        this.select = function(a, d) {
            return g(a, d)
        }
    };
    function Ja(a) {
        function g(a) {
            return function(b) {
                a.call(this, {
                    x: b.x,
                    y: b.y,
                    scale: b.scale,
                    Bc: b.delta,
                    ctrlKey: b.ctrlKey,
                    metaKey: b.metaKey,
                    altKey: b.altKey,
                    shiftKey: b.shiftKey,
                    jb: b.secondary,
                    touches: b.touches
                })
            }
        }
        function k() {
            function c(a) {
                return function(b) {
                    b.x *= M / n.clientWidth;
                    b.y *= D / n.clientHeight;
                    return a(b)
                }
            }
            "external" !== m.Pd && (A = new qa(n), R = new pa, w.Od() || (A.ia(c(b.ia)), A.ua(c(b.ia)), A.ma(c(b.ua)), R.addEventListener("keyup",
            function(b) {
                var c = !1,
                d = m.te({
                    keyCode: b.keyCode,
                    preventDefault: function() {
                        c = !0
                    }
                }); (c = c || 0 <= d.indexOf(!1)) || 27 === b.keyCode && a.d.p("interaction:reset")
            })), "hammerjs" === m.Pd && J.Q(window, "Hammer") ? (I.q(n), I.m("tap", c(b.c), !0), I.m("doubletap", c(b.k), !0), I.m("hold", c(b.ha), !0), I.m("touch", c(b.ma), !1), I.m("dragstart", c(b.X), !0), I.m("drag", c(b.n), !0), I.m("dragend", c(b.J), !0), I.m("transformstart", c(b.Ga), !0), I.m("transform", c(b.qa), !0), I.m("transformend", c(b.Ea), !0)) : (A.c(c(b.c)), A.k(c(b.k)), A.ha(c(b.ha)), A.qa(c(b.ma)), A.X(c(b.X)), A.n(c(b.n)), A.J(c(b.J))))
        }
        function d() {
            r.Zb(2) ? a.d.p("interaction:reset") : r.normalize(m.tc, W.W(m.uc))
        }
        function e(a) {
            return function() {
                x.empty() || a.apply(this, arguments)
            }
        }
        function f(a, b, c) {
            return function(d) {
                var f;
                switch (a) {
                case "click":
                    f = m.be;
                    break;
                case "doubleclick":
                    f = m.ce;
                    break;
                case "hold":
                    f = m.ie;
                    break;
                case "hover":
                    f = m.je;
                    break;
                case "mousewheel":
                    f = m.le;
                    break;
                case "mousedown":
                    f = m.ke;
                    break;
                case "dragstart":
                    f = m.fe;
                    break;
                case "drag":
                    f = m.de;
                    break;
                case "dragend":
                    f = m.ee;
                    break;
                case "transformstart":
                    f = m.se;
                    break;
                case "transform":
                    f = m.qe;
                    break;
                case "transformend":
                    f = m.re
                }
                var e = !1,
                g = !f.empty(),
                k = r.absolute(d),
                n = (b || g) && h(k, 0),
                k = (b || g) && l(k);
                g && (g = n ? n.group: null, f = f({
                    type: a,
                    group: g,
                    topmostClosedGroup: g,
                    bottommostOpenGroup: k ? k.group: null,
                    x: d.x,
                    y: d.y,
                    scale: J.ya(d.scale, 1),
                    secondary: d.jb,
                    touches: J.ya(d.touches, 1),
                    delta: J.ya(d.Bc, 0),
                    ctrlKey: d.ctrlKey,
                    metaKey: d.metaKey,
                    altKey: d.altKey,
                    shiftKey: d.shiftKey,
                    preventDefault: function() {
                        e = !0
                    }
                }), e = e || 0 <= f.indexOf(!1), n && n.Aa && "click" === a && (e = !1));
                e || c({
                    Yb: n,
                    uf: k
                },
                d)
            }
        }
        function h(a, b) {
            for (var c = C.length,
            d = void 0,
            f = 0; f < c; f++) {
                var e = C[f];
                e.scale > b && !1 === e.open && e.R && E(e, a) && (d = e, b = e.scale)
            }
            return d
        }
        function l(a) {
            var b = void 0,
            c = 0;
            X.ac(x,
            function(d) { ! 0 === d.open && d.R && d.scale > c && E(d, a) && (b = d, c = d.scale)
            });
            return b
        }
        var c = w.Sd(),
        b = this,
        m = a.options,
        n,
        r,
        p,
        s,
        u,
        q,
        v,
        x,
        z,
        y,
        B,
        F,
        G,
        N,
        t,
        A,
        R,
        M,
        D;
        a.d.i("stage:initialized",
        function(a, b, c, d) {
            n = b;
            M = c;
            D = d;
            k()
        });
        a.d.i("stage:resized",
        function(a, b, c, d) {
            M = c;
            D = d
        });
        a.d.i("stage:disposed",
        function() {
            A.Ma();
            I.Ma();
            R.c()
        });
        a.d.i("expose:initialized",
        function(a) {
            s = a
        });
        a.d.i("zoom:initialized",
        function(a) {
            r = a
        });
        a.d.i("openclose:initialized",
        function(a) {
            u = a
        });
        a.d.i("select:initialized",
        function(a) {
            q = a
        });
        a.d.i("titlebar:initialized",
        function(a) {
            v = a
        });
        a.d.i("timeline:initialized",
        function(a) {
            p = a
        });
        var C;
        a.d.i("model:loaded",
        function(a, b) {
            x = a;
            C = b
        });
        this.q = function() {};
        this.ma = e(f("mousedown", !1,
        function() {
            r.Pg()
        }));
        this.c = e(f("click", !0,
        function(a, b) {
            if (!b.jb && !b.shiftKey) {
                var c = a.Yb;
                c && (c.Aa ? document.location.href = ua.Ne("iuuq;..b`ssnurd`sbi/bnl.gn`lusdd") : q.select({
                    f: [c],
                    na: !c.selected,
                    ja: b.metaKey || b.ctrlKey
                },
                !0))
            }
        }));
        this.k = e(f("doubleclick", !0,
        function(a, b) {
            var c, d;
            if (b.jb || b.shiftKey) {
                if (c = a.Yb) c.parent.M && (c = c.parent),
                d = {
                    f: c.parent !== x ? [c.parent] : [],
                    na: !0,
                    ja: !1
                },
                q.select(d, !0),
                u.Sa({
                    f: [c],
                    na: !1,
                    ja: !0
                },
                !0, !0),
                s.ub(d, !0, !0, !1)
            } else if (c = a.Yb) d = {
                f: [c],
                na: !0,
                ja: !1
            },
            s.ub(d, !0, !0, !1),
            p.w.m({}).Ia(m.Ba / 2).call(function() {
                u.Sa({
                    f: X.Cc(x,
                    function(a) {
                        return a.Rc && !X.Fg(c, a)
                    }),
                    na: !1,
                    ja: !0
                },
                !0, !0);
                c.Rc = !0;
                u.Sa({
                    f: [c],
                    na: !0,
                    ja: !0
                },
                !0, !0)
            }).start()
        }));
        this.ha = e(f("hold", !0,
        function(a, b) {
            var c = !(b.metaKey || b.ctrlKey || b.shiftKey) && !b.jb,
            d; (d = c ? a.Yb: a.uf) && d !== x && !d.empty() && u.Sa({
                f: [d],
                na: c,
                ja: !0
            },
            !0, !1)
        }));
        this.X = e(f("dragstart", !1,
        function(a, b) {
            z = b.x;
            y = b.y;
            B = Date.now()
        }));
        this.n = e(f("drag", !1,
        function(a, b) {
            var c = Date.now();
            N = Math.min(1, c - B);
            B = c;
            var c = b.x - z,
            d = b.y - y;
            r.Ng(c, d);
            F = c;
            G = d;
            z = b.x;
            y = b.y
        }));
        this.J = e(f("dragend", !1,
        function() {
            var a = Math.sqrt(F * F + G * G) / N;
            4 <= a ? r.Og(a, F, G) : r.$d()
        }));
        this.Ga = e(f("transformstart", !1,
        function(a, b) {
            t = 1;
            z = b.x;
            y = b.y
        }));
        var L = 1,
        Q = !1;
        this.qa = e(f("transform", !1,
        function(a, b) {
            var c = b.scale - 0.01;
            r.rf(b, c / t, b.x - z, b.y - y);
            t = c;
            z = b.x;
            y = b.y;
            L = t;
            Q = Q || 2 < b.touches
        }));
        this.Ea = e(f("transformend", !1,
        function() {
            Q && 0.8 > L ? a.d.p("interaction:reset") : d();
            Q = !1
        }));
        this.ua = e(f("mousewheel", !1,
        function() {
            var a = J.zf(function() {
                d()
            },
            300);
            return function(b, f) {
                var e = m.Yh;
                1 !== e && (e = Math.pow(e, f.Bc), c ? (r.sf(f, e), a()) : r.pb(f, e, m.tc, W.W(m.uc)).H(d))
            }
        } ()));
        this.ia = e(function() {
            var b = void 0,
            c = {},
            d = !1,
            e, g = f("hover", !1,
            function() {
                b && (b.$a = !1, b.G = !0);
                e && (e.$a = !0, e.G = !0);
                v.update(e);
                a.d.p("foamtree:dirty", !1)
            });
            return function(a) {
                if ("out" === a.type) e = void 0,
                d = !0;
                else if (r.absolute(a, c), b && !b.open && E(b, c)) {
                    var f = h(c, b.scale);
                    if (!f) return;
                    d = !0;
                    e = f
                } else d = !0,
                e = h(c, 0);
                d && (g(a), b = e, d = !1)
            }
        } ());
        this.Ua = {
            click: g(this.c),
            doubleclick: g(this.k),
            hold: g(this.ha),
            mousedown: g(this.ma),
            dragstart: g(this.X),
            drag: g(this.n),
            dragend: g(this.J),
            transformstart: g(this.Ga),
            transform: g(this.qa),
            transformend: g(this.Ea),
            hover: g(this.ia),
            mousewheel: g(this.ua)
        };
        var I = function() {
            function a(b, c) {
                return function(a) {
                    a = a.gesture;
                    var d = a.center,
                    d = oa.rd(n, d.pageX, d.pageY, {});
                    d.scale = a.scale;
                    d.jb = 1 < a.touches.length;
                    d.touches = a.touches.length;
                    b.call(n, d);
                    c && a.preventDefault()
                }
            }
            var b, c = {};
            return {
                q: function(a) {
                    b = window.Hammer(a, {
                        doubletap_interval: 350,
                        hold_timeout: 400,
                        doubletap_distance: 10
                    })
                },
                m: function(d, f, e) {
                    c[d] = f;
                    b.on(d, a(f, e))
                },
                Ma: function() {
                    b && J.pa(c,
                    function(a, c) {
                        b.off(c, a)
                    })
                }
            }
        } (),
        E = function() {
            var a = {};
            return function(b, c) {
                b.Pb(c, a);
                return b.u && K.Ga(b.u, a)
            }
        } ()
    };
    function La(a) {
        function g(a, d, e, c) {
            var b, g = 0,
            k = [];
            for (b = 0; b < d.length; b++) {
                var r = Math.sqrt(K.c(d[b], d[(b + 1) % d.length]));
                k.push(r);
                g += r
            }
            for (b = 0; b < k.length; b++) k[b] /= g;
            a[0].x = e.x;
            a[0].y = e.y;
            var p = r = g = 0;
            for (b = 1; b < a.length; b++) {
                for (var s = a[b], u = 0.95 * Math.pow(b / a.length, c), g = g + 0.3819; r < g;) r += k[p],
                p = (p + 1) % k.length;
                var q = (p - 1 + k.length) % k.length,
                v = 1 - (r - g) / k[q],
                x = d[q].x,
                q = d[q].y,
                z = d[p].x,
                y = d[p].y,
                x = (x - e.x) * u + e.x,
                q = (q - e.y) * u + e.y,
                z = (z - e.x) * u + e.x,
                y = (y - e.y) * u + e.y;
                s.x = x * (1 - v) + z * v;
                s.y = q * (1 - v) + y * v
            }
        }
        function k(a, d) {
            return d.da > a.da ? 1 : d.da < a.da ? -1 : d.group.label > a.group.label
        }
        var d = {
            random: {
                Ca: function(a, d) {
                    for (var e = 0; e < a.length; e++) {
                        var c = a[e];
                        c.x = d.x + Math.random() * d.e;
                        c.y = d.y + Math.random() * d.j
                    }
                },
                qb: "box"
            },
            order: {
                Ca: function(a, d, e) {
                    g(a, d, e, 0.5)
                },
                qb: "polygon"
            },
            treemap: {
                Ca: function(a, d) {
                    Aa.nf(a, d)
                },
                qb: "box"
            },
            fisheye: {
                Ca: function(a, d, e) {
                    a = a.slice(0);
                    a.sort(k);
                    g(a, d, e, 0.25)
                },
                qb: "polygon"
            },
            blackhole: {
                Ca: function(a, d, e) {
                    a = a.slice(0);
                    a.sort(k).reverse();
                    g(a, d, e, 1)
                },
                qb: "polygon"
            }
        },
        e = a.options;
        this.q = function() {};
        this.c = function(a) {
            var g = a.f,
            l = a.L;
            if (0 < g.length) {
                var c = d[e.Ca || "random"];
                "box" === c.qb ? (a = K.C(a.L, {}), c.Ca(g, a), K.hd(g, K.Tb(a), l)) : c.Ca(g, l, K.k(l, {}))
            }
        }
    };
    function Ma(a) {
        function g(a, b) {
            for (var d = 0,
            e = Math.pow(c.xb, a.la), f = c.cc * e, e = c.Dd * e, g = a.f, l = g.length - 1; 0 <= l; l--) {
                var h = g[l];
                if (h.Y) {
                    var k = h,
                    m = e,
                    B = k.L;
                    B && (k.Sc = B);
                    k.L = xa.Ea(k.u, m);
                    B && !k.L && (k.ka = !0);
                    k.L && k.Sc && K.hd(k.f, k.Sc, k.L)
                }
                k = h;
                k.aa = 0 < f ? xa.Ea(k.u, f) : k.u;
                k.aa && (K.C(k.aa, k.C), K.k(k.aa, k.ra), k.eb = Math.sqrt(k.ra.ea / Math.PI));
                h.f && (h = b(h), h > d && (d = h))
            }
            return d
        }
        function k(a, d) {
            a !== l && 2 * Math.sqrt(a.ra.ea / (Math.PI * a.f.length)) < c.Fd || (a.L || (a.L = xa.Ea(a.u, c.Dd * Math.pow(c.xb, a.la - 1))), a.L && (b.c(a), h.n(a), a.Y = !0, d(a)), h.J(a))
        }
        function d(a) {
            a !== l && 2 * Math.sqrt(a.ra.ea / (Math.PI * a.f.length)) < 0.85 * c.Fd && (a.Y = !1, a.wa = !1, a.Jb = !0, a.L = null)
        }
        function e(a) {
            var b = a.f;
            ya.n(b, a.L);
            ya.Vb(b, a.L);
            b = $.df(a);
            return a.ji = b
        }
        function f(a) {
            return a < c.Ee || 1E-4 > a
        }
        var h = this,
        l, c = a.options,
        b = new La(a),
        m = 0;
        a.d.i("model:loaded",
        function(a) {
            l = a;
            m = 0
        });
        this.q = function() {
            b.q()
        };
        this.c = function(a, b, h, s) {
            function u(b) {
                b.Y && b.wa ? d(b) : b.Jb && k(b,
                function() {
                    ya.n(b.f, b.L);
                    ya.Vb(b.f, b.L);
                    a(b)
                });
                if (!b.L || !b.Y) return 0;
                var c;
                b.parent && b.parent.ka || b.Ja ? (c = e(b), s && s(b), b.Ja = !f(c), b.ka = !0) : c = 0;
                return Math.max(c, g(b, u))
            }
            function q(a, b, d) {
                m < a && (m = a);
                var e = c.Ee;
                c.xe(b ? 1 : 1 - (a - e) / (m - e || 1), b, d);
                b && (m = 0)
            }
            var v = u(l),
            x = f(v);
            b && q(v, x, h);
            return x
        };
        this.k = function(a) {
            function b(c) {
                c.Y || k(c, a);
                if (c.L) {
                    for (; ! f(e(c)););
                    c.ka = !0;
                    c.Ja = !1;
                    g(c, b)
                }
            }
            b(l)
        };
        this.J = function(a) {
            X.A(a,
            function(a) {
                a.Sb = a.Mb * c.ig
            })
        };
        this.n = function(a) {
            var b = a.f,
            c;
            c = 0;
            for (var d = a.f,
            e = 0; e < d.length; e++) c += d[e].da;
            a.mi = c;
            for (d = 0; d < b.length; d++) e = b[d],
            e.Te = e.e,
            e.Mb = a.ea / Math.PI * (0 < c ? e.da / c: 1 / b.length)
        }
    };
    var Na = new
    function() {
    	  ////wqs wangqs
        this.ff = function(a) {
         
        	  return;
            a.beginPath();
            a.moveTo(3.2, 497);
            a.bezierCurveTo(0.1, 495.1, 0, 494.1, 0, 449.6);
            a.bezierCurveTo(0, 403.5, -0.1, 404.8, 4.1, 402.6);
            a.bezierCurveTo(5.2, 402, 7.4, 401.4, 9, 401.2);
            a.bezierCurveTo(10.6, 401, 31.2, 400.6, 54.7, 400.2);
            a.bezierCurveTo(99.5, 399.4, 101, 399.5, 104.6, 402.3);
            a.bezierCurveTo(107.9, 404.9, 107.6, 404, 129.3, 473.2);
            a.bezierCurveTo(131, 478.6, 132.9, 484.4, 133.4, 486.1);
            a.bezierCurveTo(135.2, 491.4, 135.4, 494.9, 134, 496.4);
            a.bezierCurveTo(132.8, 497.7, 131.7, 497.7, 68.6, 497.7);
            a.bezierCurveTo(24.2, 497.7, 4, 497.5, 3.2, 497);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill();
            a.beginPath();
            a.moveTo(162.1, 497);
            a.bezierCurveTo(159.5, 496.3, 157.7, 494.6, 156.2, 491.6);
            a.bezierCurveTo(155.5, 490.3, 148.7, 469.4, 141.1, 445.2);
            a.bezierCurveTo(126.1, 397.5, 125.6, 395.4, 128.1, 389.8);
            a.bezierCurveTo(129.5, 386.7, 164.1, 339, 168, 334.9);
            a.bezierCurveTo(170.3, 332.5, 172.2, 332.1, 175.1, 333.7);
            a.bezierCurveTo(176.1, 334.2, 189.3, 347, 204.3, 362.1);
            a.bezierCurveTo(229.4, 387.4, 231.8, 390, 233.5, 394);
            a.bezierCurveTo(235.2, 397.8, 235.4, 399.2, 235.4, 404.3);
            a.bezierCurveTo(235.3, 415, 230.5, 489.9, 229.8, 492.5);
            a.bezierCurveTo(228.4, 497.5, 229.2, 497.4, 194.7, 497.5);
            a.bezierCurveTo(177.8, 497.6, 163.1, 497.4, 162.1, 497);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill();
            a.beginPath();
            a.moveTo(258.7, 497);
            a.bezierCurveTo(255.8, 496.1, 252.6, 492.3, 252, 489.1);
            a.bezierCurveTo(251.4, 484.8, 256.8, 405.2, 258.1, 401.1);
            a.bezierCurveTo(260.4, 393.4, 262.7, 391.1, 300.4, 359.2);
            a.bezierCurveTo(319.9, 342.6, 337.7, 327.9, 339.9, 326.5);
            a.bezierCurveTo(347.4, 321.6, 350.4, 321, 372, 320.5);
            a.bezierCurveTo(393.4, 320, 400.5, 320.4, 407.5, 322.5);
            a.bezierCurveTo(413.9, 324.4, 487.4, 359.5, 490.6, 362.1);
            a.bezierCurveTo(492, 363.3, 493.9, 365.8, 495, 367.7);
            a.lineTo(496.8, 371.2);
            a.lineTo(497, 419.3);
            a.bezierCurveTo(497.1, 445.7, 497, 468, 496.8, 468.8);
            a.bezierCurveTo(496.2, 471.6, 489.6, 480.8, 485, 485.3);
            a.bezierCurveTo(478.6, 491.7, 474.9, 494.1, 468.2, 496);
            a.lineTo(462.3, 497.7);
            a.lineTo(361.6, 497.7);
            a.bezierCurveTo(303.1, 497.6, 259.9, 497.3, 258.7, 497);
            a.closePath();
            a.fillStyle = "rgba(200,200,200,1)";
            a.fill();
            a.beginPath();
            a.moveTo(4.4, 380.8);
            a.bezierCurveTo(2.9, 380.2, 1.7, 379.8, 1.6, 379.8);
            a.bezierCurveTo(1.5, 379.8, 1.2, 378.8, 0.7, 377.6);
            a.bezierCurveTo(0.2, 376.1, 0, 361.6, 0, 331.2);
            a.bezierCurveTo(0, 281.2, -0.2, 283.1, 4.9, 280.9);
            a.bezierCurveTo(7.1, 279.9, 19.3, 278.2, 54.8, 274.1);
            a.bezierCurveTo(80.6, 271.1, 102.9, 268.6, 104.4, 268.6);
            a.bezierCurveTo(105.8, 268.6, 109.1, 269.4, 111.7, 270.4);
            a.bezierCurveTo(116, 272.1, 117.2, 273.2, 133.4, 289.3);
            a.bezierCurveTo(150.9, 306.8, 153.4, 310, 153.4, 314.5);
            a.bezierCurveTo(153.4, 317.6, 151.1, 321.3, 136.4, 341.2);
            a.bezierCurveTo(109.4, 377.8, 111.6, 375.3, 105.4, 378.1);
            a.lineTo(101.3, 380);
            a.lineTo(75.7, 380.5);
            a.bezierCurveTo(6.8, 381.8, 7.3, 381.8, 4.4, 380.8);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill();
            a.beginPath();
            a.moveTo(243.5, 372.4);
            a.bezierCurveTo(240.2, 370.8, 136.6, 266.7, 134.2, 262.6);
            a.bezierCurveTo(132.1, 259, 131.7, 254.9, 133.2, 251.3);
            a.bezierCurveTo(134.5, 248.2, 166.3, 206, 169.3, 203.4);
            a.bezierCurveTo(172.6, 200.5, 178.5, 198.4, 183.2, 198.4);
            a.bezierCurveTo(187.1, 198.4, 275.2, 204.1, 281.6, 204.8);
            a.bezierCurveTo(289.7, 205.7, 294.6, 208.7, 297.6, 214.6);
            a.bezierCurveTo(300.5, 220.3, 327.4, 297.4, 327.8, 301.1);
            a.bezierCurveTo(328.3, 305.7, 326.7, 310.4, 323.4, 314);
            a.bezierCurveTo(322, 315.6, 307.8, 327.9, 291.9, 341.3);
            a.bezierCurveTo(256.2, 371.4, 256.6, 371.2, 253.9, 372.5);
            a.bezierCurveTo(251.1, 373.9, 246.5, 373.9, 243.5, 372.4);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill();
            a.beginPath();
            a.moveTo(489.3, 339.1);
            a.bezierCurveTo(488.6, 338.9, 473.7, 331.9, 456.3, 323.6);
            a.bezierCurveTo(435.9, 313.9, 423.8, 307.8, 422.4, 306.4);
            a.bezierCurveTo(419.5, 303.7, 418, 300.2, 418, 296.1);
            a.bezierCurveTo(418, 292.5, 438, 185, 439.3, 181.6);
            a.bezierCurveTo(441.2, 176.6, 445.5, 173.1, 450.8, 172.1);
            a.bezierCurveTo(456, 171.2, 487.1, 169.2, 489.6, 169.7);
            a.bezierCurveTo(493.1, 170.3, 495.5, 171.9, 497, 174.7);
            a.bezierCurveTo(498.1, 176.7, 498.2, 181.7, 498.4, 253.2);
            a.bezierCurveTo(498.5, 295.3, 498.4, 330.9, 498.2, 332.5);
            a.bezierCurveTo(497.5, 337.4, 493.7, 340.2, 489.3, 339.1);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill();
            a.beginPath();
            a.moveTo(353.2, 300.7);
            a.bezierCurveTo(350.4, 299.8, 347.9, 297.9, 346.5, 295.6);
            a.bezierCurveTo(345.8, 294.5, 338.2, 273.7, 329.6, 249.5);
            a.bezierCurveTo(314.6, 207.1, 314.1, 205.3, 314.1, 200.4);
            a.bezierCurveTo(314.1, 196.7, 314.4, 194.6, 315.3, 193);
            a.bezierCurveTo(316, 191.7, 322.5, 181.6, 329.8, 170.6);
            a.bezierCurveTo(346.8, 144.8, 345.4, 145.8, 365.8, 144.4);
            a.bezierCurveTo(380.9, 143.4, 385.7, 143.7, 390.6, 146.3);
            a.bezierCurveTo(397.3, 149.8, 417.4, 164.4, 419.2, 167);
            a.bezierCurveTo(422.4, 171.8, 422.4, 171.8, 410.6, 234.4);
            a.bezierCurveTo(402.3, 278.6, 399.3, 293.2, 398.1, 295.3);
            a.bezierCurveTo(395.4, 300.1, 393.7, 300.5, 373, 300.9);
            a.bezierCurveTo(363.1, 301.1, 354.2, 301, 353.2, 300.7);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill();
            a.beginPath();
            a.moveTo(6.2, 259.9);
            a.bezierCurveTo(4.9, 259.2, 3.2, 257.8, 2.4, 256.8);
            a.bezierCurveTo(1, 254.9, 1, 254.8, 0.8, 148.7);
            a.bezierCurveTo(0.7, 74, 0.9, 40.8, 1.4, 36.7);
            a.bezierCurveTo(2.3, 29.6, 4.7, 24.4, 9.8, 18.3);
            a.bezierCurveTo(14.1, 13.1, 20.9, 7.3, 25, 5.3);
            a.bezierCurveTo(26.5, 4.6, 31, 3.3, 34.9, 2.6);
            a.bezierCurveTo(41.3, 1.3, 44.2, 1.2, 68.5, 1.4);
            a.lineTo(95.1, 1.6);
            a.lineTo(99, 3.5);
            a.bezierCurveTo(101.2, 4.6, 103.9, 6.6, 105.2, 8.1);
            a.bezierCurveTo(107.7, 11, 153.1, 88.2, 155.8, 94);
            a.bezierCurveTo(159.1, 101.4, 159.6, 104.7, 159.5, 121.6);
            a.bezierCurveTo(159.5, 147.8, 158.4, 177.2, 157.3, 181);
            a.bezierCurveTo(156.8, 182.8, 155.6, 186.1, 154.6, 188.1);
            a.bezierCurveTo(152.6, 192.2, 119.5, 237.2, 115.1, 241.8);
            a.bezierCurveTo(112.1, 244.9, 106.3, 248.3, 102, 249.4);
            a.bezierCurveTo(99.2, 250.1, 13, 261.1, 10.1, 261.1);
            a.bezierCurveTo(9.2, 261.1, 7.5, 260.6, 6.2, 259.9);
            a.closePath();
            a.fillStyle = "rgba(200,200,200,1)";
            a.fill();
            a.beginPath();
            a.moveTo(234.1, 183.4);
            a.bezierCurveTo(180.2, 179.7, 182.3, 180, 179.5, 174.5);
            a.lineTo(178, 171.4);
            a.lineTo(178.7, 142.4);
            a.bezierCurveTo(179.4, 114.8, 179.5, 113.3, 180.9, 110.4);
            a.bezierCurveTo(183.5, 105, 182.7, 105.2, 237.9, 95.3);
            a.bezierCurveTo(285.1, 86.7, 287.9, 86.3, 291, 87.1);
            a.bezierCurveTo(292.8, 87.6, 295.3, 88.8, 296.7, 89.9);
            a.bezierCurveTo(299.1, 91.8, 321.9, 124.4, 325, 130.3);
            a.bezierCurveTo(326.9, 134, 327.2, 139.1, 325.7, 142.6);
            a.bezierCurveTo(324.5, 145.5, 302.5, 179.1, 300.2, 181.5);
            a.bezierCurveTo(297, 184.9, 293.5, 186.3, 287.4, 186.5);
            a.bezierCurveTo(284.4, 186.6, 260.4, 185.2, 234.1, 183.4);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill();
            a.beginPath();
            a.moveTo(435.8, 153.4);
            a.bezierCurveTo(434.8, 153.1, 433, 152.3, 431.7, 151.6);
            a.bezierCurveTo(428.4, 150, 410.1, 137.1, 407, 134.4);
            a.bezierCurveTo(404.1, 131.8, 402.7, 128.3, 403.2, 125.1);
            a.bezierCurveTo(403.6, 122.9, 420.3, 81.3, 423, 75.9);
            a.bezierCurveTo(424.7, 72.6, 426.6, 70.4, 429.3, 68.9);
            a.bezierCurveTo(431.1, 67.9, 435, 67.7, 462.2, 67.6);
            a.lineTo(493.1, 67.3);
            a.lineTo(495.4, 69.6);
            a.bezierCurveTo(497, 71.3, 497.8, 72.8, 498.1, 75);
            a.bezierCurveTo(498.4, 76.6, 498.5, 92.9, 498.4, 111.1);
            a.bezierCurveTo(498.2, 141.2, 498.1, 144.3, 497, 146.3);
            a.bezierCurveTo(494.8, 150.3, 493.3, 150.6, 470.3, 152.4);
            a.bezierCurveTo(448.6, 154, 438.8, 154.3, 435.8, 153.4);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill();
            a.beginPath();
            a.moveTo(346.6, 125.3);
            a.bezierCurveTo(345, 124.5, 342.6, 122.6, 341.4, 121);
            a.bezierCurveTo(337.1, 115.7, 313, 79.8, 311.6, 76.7);
            a.bezierCurveTo(309.4, 71.7, 309.3, 68, 311.2, 58.2);
            a.bezierCurveTo(319.2, 16.9, 321.3, 7.1, 322.4, 5.2);
            a.bezierCurveTo(323.1, 4, 324.7, 2.4, 326, 1.6);
            a.bezierCurveTo(328.3, 0.3, 329.4, 0.3, 353.9, 0.3);
            a.bezierCurveTo(379.2, 0.3, 379.5, 0.3, 382.4, 1.8);
            a.bezierCurveTo(384, 2.7, 386, 4.5, 386.9, 5.9);
            a.bezierCurveTo(388.6, 8.6, 405.1, 46.3, 407.2, 52.2);
            a.bezierCurveTo(408.7, 56.3, 408.8, 60.7, 407.7, 64.1);
            a.bezierCurveTo(407.3, 65.4, 402.2, 78.2, 396.3, 92.7);
            a.bezierCurveTo(382.6, 126.3, 384.1, 124.6, 366.6, 126);
            a.bezierCurveTo(353.4, 127.1, 350, 127, 346.6, 125.3);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill();
            a.beginPath();
            a.moveTo(179.2, 85.6);
            a.bezierCurveTo(175.7, 84.6, 171.9, 82, 170, 79.2);
            a.bezierCurveTo(167.2, 75.2, 130.6, 12.4, 129.3, 9.3);
            a.bezierCurveTo(128.2, 6.7, 128.1, 5.9, 128.8, 4.2);
            a.bezierCurveTo(130.5, 0, 125.2, 0.3, 211.7, 0);
            a.bezierCurveTo(255.3, -0.1, 292.2, 0, 293.9, 0.3);
            a.bezierCurveTo(297.7, 0.8, 301.1, 4, 301.8, 7.6);
            a.bezierCurveTo(302.3, 10.5, 293.9, 55.2, 291.9, 59.6);
            a.bezierCurveTo(290.4, 63, 286.1, 66.9, 282.3, 68.3);
            a.bezierCurveTo(279.6, 69.3, 193.5, 85.1, 185.5, 86.1);
            a.bezierCurveTo(183.8, 86.3, 181, 86.1, 179.2, 85.6);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill();
            a.beginPath();
            a.moveTo(431.9, 47.7);
            a.bezierCurveTo(428.7, 46.9, 426.4, 45.2, 424.6, 42.3);
            a.bezierCurveTo(421.8, 37.8, 409.2, 7.7, 409.2, 5.5);
            a.bezierCurveTo(409.2, 1.2, 408, 1.3, 451.6, 1.3);
            a.bezierCurveTo(495, 1.3, 494, 1.2, 496.1, 5.4);
            a.bezierCurveTo(497, 7.2, 497.2, 10.2, 497, 25.5);
            a.lineTo(496.8, 43.5);
            a.lineTo(494.9, 45.4);
            a.lineTo(493, 47.3);
            a.lineTo(474.8, 47.7);
            a.bezierCurveTo(450.1, 48.3, 434.5, 48.3, 431.9, 47.7);
            a.closePath();
            a.fillStyle = "rgba(200,200,200,1)";
            a.fill();
            a.beginPath();
            a.moveTo(1.3, 511.9);
            a.lineTo(1.3, 514.3);
            a.lineTo(3.7, 514.3);
            a.bezierCurveTo(7.2, 514.4, 9.5, 515.5, 10.6, 517.6);
            a.bezierCurveTo(11.7, 519.8, 12.1, 522.7, 12, 526.3);
            a.lineTo(12, 591);
            a.lineTo(22.8, 591);
            a.lineTo(22.8, 553.2);
            a.lineTo(49.9, 553.2);
            a.lineTo(49.9, 548.5);
            a.lineTo(22.8, 548.5);
            a.lineTo(22.8, 516.7);
            a.lineTo(41.9, 516.7);
            a.bezierCurveTo(46.7, 516.7, 50.4, 517.8, 52.9, 520);
            a.bezierCurveTo(55.5, 522.2, 56.8, 525.7, 56.8, 530.5);
            a.lineTo(59.2, 530.5);
            a.lineTo(59.2, 521.5);
            a.bezierCurveTo(59.3, 519, 58.7, 516.8, 57.3, 514.9);
            a.bezierCurveTo(55.9, 513, 53.1, 512, 49, 511.9);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill();
            a.beginPath();
            a.moveTo(107.6, 562.8);
            a.bezierCurveTo(107.6, 569.9, 106.2, 575.7, 103.5, 580.3);
            a.bezierCurveTo(100.8, 584.8, 97.2, 587.2, 92.7, 587.4);
            a.bezierCurveTo(88.1, 587.2, 84.5, 584.8, 81.8, 580.3);
            a.bezierCurveTo(79.1, 575.7, 77.8, 569.9, 77.7, 562.8);
            a.bezierCurveTo(77.8, 555.8, 79.1, 550, 81.8, 545.4);
            a.bezierCurveTo(84.5, 540.8, 88.1, 538.4, 92.7, 538.3);
            a.bezierCurveTo(97.2, 538.4, 100.8, 540.8, 103.5, 545.4);
            a.bezierCurveTo(106.2, 550, 107.6, 555.8, 107.6, 562.8);
            a.moveTo(66.3, 562.8);
            a.bezierCurveTo(66.4, 571.1, 68.7, 578, 73.2, 583.5);
            a.bezierCurveTo(77.8, 589.1, 84.2, 591.9, 92.7, 592.1);
            a.bezierCurveTo(101.1, 591.9, 107.6, 589.1, 112.1, 583.5);
            a.bezierCurveTo(116.7, 578, 118.9, 571.1, 119, 562.8);
            a.bezierCurveTo(118.9, 554.5, 116.7, 547.6, 112.1, 542.1);
            a.bezierCurveTo(107.6, 536.6, 101.1, 533.7, 92.7, 533.5);
            a.bezierCurveTo(84.2, 533.7, 77.8, 536.6, 73.2, 542.1);
            a.bezierCurveTo(68.7, 547.6, 66.4, 554.5, 66.3, 562.8);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill();
            a.beginPath();
            a.moveTo(161.5, 579.6);
            a.bezierCurveTo(160.3, 581.4, 158.9, 583.1, 157.2, 584.5);
            a.bezierCurveTo(155.4, 585.9, 153.1, 586.7, 150.1, 586.8);
            a.bezierCurveTo(147, 586.8, 144.4, 585.9, 142.2, 584);
            a.bezierCurveTo(140, 582.1, 138.9, 579.3, 138.8, 575.4);
            a.bezierCurveTo(138.8, 571.7, 140.5, 568.9, 143.8, 566.7);
            a.bezierCurveTo(147.2, 564.6, 151.9, 563.5, 157.9, 563.4);
            a.lineTo(161.5, 563.4);
            a.moveTo(172.3, 591);
            a.lineTo(172.3, 558.6);
            a.bezierCurveTo(172.1, 548.2, 169.9, 541.3, 165.8, 538);
            a.bezierCurveTo(161.7, 534.7, 156.9, 533.2, 151.3, 533.5);
            a.bezierCurveTo(147.6, 533.5, 144.1, 533.8, 140.8, 534.5);
            a.bezierCurveTo(137.4, 535.1, 135, 536.2, 133.4, 537.7);
            a.bezierCurveTo(131.9, 539.2, 131.1, 540.8, 130.7, 542.6);
            a.bezierCurveTo(130.4, 544.4, 130.3, 546.4, 130.4, 548.5);
            a.lineTo(135.8, 548.5);
            a.bezierCurveTo(136.7, 544.6, 138.3, 542, 140.5, 540.5);
            a.bezierCurveTo(142.8, 538.9, 145.6, 538.2, 148.9, 538.3);
            a.bezierCurveTo(152.6, 538.1, 155.6, 539.4, 157.9, 542.2);
            a.bezierCurveTo(160.2, 545, 161.4, 550.5, 161.5, 558.6);
            a.lineTo(157.9, 558.6);
            a.bezierCurveTo(149.6, 558.5, 142.5, 559.7, 136.6, 562.1);
            a.bezierCurveTo(130.7, 564.5, 127.6, 568.9, 127.4, 575.4);
            a.bezierCurveTo(127.7, 581.8, 129.8, 586.3, 133.6, 588.7);
            a.bezierCurveTo(137.4, 591.1, 141.1, 592.3, 144.7, 592.1);
            a.bezierCurveTo(149.2, 592.1, 152.8, 591.3, 155.6, 590);
            a.bezierCurveTo(158.3, 588.6, 160.3, 587.1, 161.5, 585.6);
            a.lineTo(162.1, 585.6);
            a.lineTo(166.3, 591);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill();
            a.beginPath();
            a.moveTo(200.3, 539.5);
            a.bezierCurveTo(199.8, 538, 198.7, 536.8, 197, 536);
            a.bezierCurveTo(195.4, 535.1, 193.1, 534.7, 190.2, 534.7);
            a.lineTo(179.4, 534.7);
            a.lineTo(179.4, 537.1);
            a.lineTo(181.8, 537.1);
            a.bezierCurveTo(185.3, 537.1, 187.6, 538.2, 188.7, 540.4);
            a.bezierCurveTo(189.8, 542.5, 190.3, 545.4, 190.2, 549.1);
            a.lineTo(190.2, 591);
            a.lineTo(200.9, 591);
            a.lineTo(200.9, 545.2);
            a.bezierCurveTo(202.4, 543.5, 204.2, 542, 206.2, 540.8);
            a.bezierCurveTo(208.3, 539.6, 210.5, 538.9, 212.9, 538.9);
            a.bezierCurveTo(215.9, 538.8, 218.3, 540, 219.9, 542.5);
            a.bezierCurveTo(221.6, 544.9, 222.4, 549.1, 222.5, 555);
            a.lineTo(222.5, 591);
            a.lineTo(233.2, 591);
            a.lineTo(233.2, 555);
            a.bezierCurveTo(233.3, 553.8, 233.2, 552.3, 233.2, 550.6);
            a.bezierCurveTo(233.1, 549, 232.9, 547.6, 232.6, 546.7);
            a.bezierCurveTo(233.9, 544.8, 235.7, 543, 238, 541.4);
            a.bezierCurveTo(240.4, 539.8, 242.7, 539, 245.2, 538.9);
            a.bezierCurveTo(248.2, 538.8, 250.6, 540, 252.3, 542.5);
            a.bezierCurveTo(253.9, 544.9, 254.8, 549.1, 254.8, 555);
            a.lineTo(254.8, 591);
            a.lineTo(265.6, 591);
            a.lineTo(265.6, 555);
            a.bezierCurveTo(265.4, 546.5, 263.8, 540.8, 260.6, 537.8);
            a.bezierCurveTo(257.4, 534.7, 253.4, 533.3, 248.8, 533.5);
            a.bezierCurveTo(245.4, 533.5, 242.2, 534.2, 238.9, 535.7);
            a.bezierCurveTo(235.7, 537.1, 233, 539.2, 230.9, 541.9);
            a.bezierCurveTo(229.3, 538.6, 227.3, 536.4, 224.8, 535.2);
            a.bezierCurveTo(222.3, 534, 219.5, 533.4, 216.5, 533.5);
            a.bezierCurveTo(212.9, 533.6, 209.8, 534.2, 207.1, 535.4);
            a.bezierCurveTo(204.5, 536.5, 202.4, 537.9, 200.9, 539.5);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill();
            a.beginPath();
            a.moveTo(284, 511.9);
            a.bezierCurveTo(279.9, 512, 277.2, 513, 275.8, 514.9);
            a.bezierCurveTo(274.4, 516.8, 273.7, 519, 273.8, 521.5);
            a.lineTo(273.8, 530.5);
            a.lineTo(276.2, 530.5);
            a.bezierCurveTo(276.3, 525.7, 277.6, 522.2, 280.1, 520);
            a.bezierCurveTo(282.7, 517.8, 286.4, 516.7, 291.2, 516.7);
            a.lineTo(302, 516.7);
            a.lineTo(302, 590.9);
            a.lineTo(312.7, 590.9);
            a.lineTo(312.7, 516.7);
            a.lineTo(339.7, 516.7);
            a.lineTo(339.7, 511.9);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill();
            a.beginPath();
            a.moveTo(349.4, 590.9);
            a.lineTo(360.2, 590.9);
            a.lineTo(360.2, 546.7);
            a.bezierCurveTo(361.4, 544.8, 363, 543.4, 364.9, 542.3);
            a.bezierCurveTo(366.9, 541.2, 369.1, 540.7, 371.5, 540.7);
            a.bezierCurveTo(373.7, 540.7, 375.5, 541, 377.2, 541.6);
            a.bezierCurveTo(378.9, 542.2, 380.2, 543.1, 381.1, 544.3);
            a.lineTo(385.9, 540.7);
            a.bezierCurveTo(385.3, 539.5, 384.7, 538.4, 384, 537.5);
            a.bezierCurveTo(383.4, 536.6, 382.6, 535.9, 381.7, 535.3);
            a.bezierCurveTo(380.8, 534.7, 379.7, 534.2, 378.3, 533.9);
            a.bezierCurveTo(377, 533.6, 375.8, 533.5, 374.5, 533.5);
            a.bezierCurveTo(370.9, 533.6, 367.9, 534.3, 365.5, 535.7);
            a.bezierCurveTo(363.2, 537, 361.4, 538.5, 360.2, 540.1);
            a.lineTo(359.6, 540.1);
            a.bezierCurveTo(359, 538.3, 357.9, 536.9, 356.3, 536);
            a.bezierCurveTo(354.6, 535.1, 352.4, 534.7, 349.4, 534.7);
            a.lineTo(339.8, 534.7);
            a.lineTo(339.8, 537.1);
            a.lineTo(341, 537.1);
            a.bezierCurveTo(344.5, 537.1, 346.8, 538.2, 347.9, 540.4);
            a.bezierCurveTo(349, 542.5, 349.5, 545.4, 349.4, 549.1);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill();
            a.beginPath();
            a.moveTo(440.3, 559.8);
            a.bezierCurveTo(440.3, 551.4, 438.3, 544.9, 434.4, 540.4);
            a.bezierCurveTo(430.4, 535.8, 424.4, 533.5, 416.3, 533.5);
            a.bezierCurveTo(408.8, 533.7, 403, 536.6, 399, 542.1);
            a.bezierCurveTo(395, 547.6, 393, 554.5, 393, 562.8);
            a.bezierCurveTo(393, 571.1, 395.1, 578, 399.3, 583.5);
            a.bezierCurveTo(403.5, 589.1, 409.7, 591.9, 418.1, 592.1);
            a.bezierCurveTo(422.6, 592.2, 426.7, 591.2, 430.2, 589.2);
            a.bezierCurveTo(433.8, 587.2, 437, 584, 439.7, 579.6);
            a.lineTo(437.3, 577.8);
            a.bezierCurveTo(435.2, 580.8, 432.9, 583.1, 430.2, 584.8);
            a.bezierCurveTo(427.6, 586.5, 424.4, 587.3, 420.5, 587.4);
            a.bezierCurveTo(415.4, 587.2, 411.4, 585.1, 408.6, 580.9);
            a.bezierCurveTo(405.8, 576.8, 404.4, 571.3, 404.4, 564.6);
            a.lineTo(440, 564.6);
            a.moveTo(404.4, 559.8);
            a.bezierCurveTo(404.4, 553.7, 405.6, 548.7, 407.9, 544.9);
            a.bezierCurveTo(410.3, 541, 413.3, 539, 416.9, 538.9);
            a.bezierCurveTo(421.1, 538.9, 424.3, 540.8, 426.4, 544.4);
            a.bezierCurveTo(428.4, 548.1, 429.5, 553.2, 429.5, 559.8);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill();
            a.beginPath();
            a.moveTo(497.1, 559.8);
            a.bezierCurveTo(497.1, 551.4, 495.1, 544.9, 491.2, 540.4);
            a.bezierCurveTo(487.2, 535.8, 481.2, 533.5, 473.1, 533.5);
            a.bezierCurveTo(465.6, 533.7, 459.9, 536.6, 455.9, 542.1);
            a.bezierCurveTo(451.9, 547.6, 449.8, 554.5, 449.8, 562.8);
            a.bezierCurveTo(449.8, 571.1, 451.9, 578, 456.1, 583.5);
            a.bezierCurveTo(460.3, 589.1, 466.6, 591.9, 474.9, 592.1);
            a.bezierCurveTo(479.4, 592.2, 483.5, 591.2, 487.1, 589.2);
            a.bezierCurveTo(490.6, 587.2, 493.8, 584, 496.5, 579.6);
            a.lineTo(494.1, 577.8);
            a.bezierCurveTo(492, 580.8, 489.7, 583.1, 487.1, 584.8);
            a.bezierCurveTo(484.4, 586.5, 481.2, 587.3, 477.3, 587.4);
            a.bezierCurveTo(472.2, 587.2, 468.2, 585.1, 465.4, 580.9);
            a.bezierCurveTo(462.6, 576.8, 461.2, 571.3, 461.2, 564.6);
            a.lineTo(496.8, 564.6);
            a.moveTo(461.2, 559.8);
            a.bezierCurveTo(461.2, 553.7, 462.4, 548.7, 464.8, 544.9);
            a.bezierCurveTo(467.1, 541, 470.1, 539, 473.7, 538.9);
            a.bezierCurveTo(477.9, 538.9, 481.1, 540.8, 483.2, 544.4);
            a.bezierCurveTo(485.3, 548.1, 486.3, 553.2, 486.3, 559.8);
            a.closePath();
            a.fillStyle = "rgba(220,20,3,1)";
            a.fill()
        }
    };
    Na.Ub = {
        width: 498,
        height: 592
    };
    function Oa(a, g) {
     
        function k(a, b, c, d) {
        	 
            null === a && c.clearRect(0, 0, x, z);
            var e, f = Array(E.length);
            for (e = E.length - 1; 0 <= e; e--) f[e] = E[e].fa(c, d);
            for (e = E.length - 1; 0 <= e; e--) f[e] && E[e].P(c, d);
            G.$b([c, q],
            function(d) {
                var e;
                if (null !== a) {
                    c.save();
                    c.globalCompositeOperation = "destination-out";
                    c.fillStyle = "rgba(255, 255, 255, 1)";
                    for (e = a.length - 1; 0 <= e; e--) c.save(),
                    c.beginPath(),
                    a[e].lb(c),
                    ia.bd(c, a[e].u),
                    c.fill(),
                    c.restore();
                    c.restore()
                }
                d = d.scale;
                if (0 !== b.length) {
                    var g;
                    e = {};
                    for (g = E.length - 1; 0 <= g; g--) E[g].pf(e);
                    for (var l = I.length - 1; 0 <= l; l--) if (g = I[l], e[g.id]) {
                        var h = g.De;
                        for (g = 0; g < b.length; g++) {
                            var k = b[g]; ! k.parent || k.parent.wa && k.parent.Y ? h(k, d) : k.va.clear()
                        }
                    }
                };
             
                for (e = E.length - 1; 0 <= e; e--) l = E[e],
                f[e] && l.Yc(b, c, d)
            });
            for (e = E.length - 1; 0 <= e; e--) f[e] && E[e].xa(c);
            t.vc && (c.canvas.style.opacity = 0.99, setTimeout(function() {
                c.canvas.style.opacity = 1
            },
            1))
        }
        function d() {
            function a(b, c) {
                b.Xa = Math.floor(100 * b.scale) - c;
                0 < b.opacity && !b.open && c++;
                var d = b.f;
                if (d) for (var e = d.length - 1; 0 <= e; e--) a(d[e], c)
            }
            var c = null,
            d = null,
            f = null;
            G.$b(v,
            function(g) {
                var l = !1;
                X.A(A,
                function(a) {
                    l = a.Nc() || l;
                    a.hc()
                });
                l && (A.G = !0);
                X.qd(A,
                function(a) {
                    a.parent && a.parent.ka && a.va.clear()
                });
                b(g);
                f = [];
                X.bc(A,
                function(a) {
                    if (a.R) {
                        f.push(a);
                        for (var b = a.parent; b !== A && (b.open || 0 === b.opacity);) b = b.parent;
                        b !== A && 0.1 > Math.abs(b.scale - a.scale) && (a.scale = Math.min(a.scale, b.scale))
                    }
                });
                a(A, 0);
                f.sort(function(a, b) {
                    return a.Xa - b.Xa
                });
                if (e()) c = f,
                d = null;
                else {
                    var h = {},
                    k = {};
                    X.A(A,
                    function(a) {
                        if (!h[a.id] && (a.ka || a.G || B.c(a))) {
                            for (var b = a.parent; b && b !== A;) 0 < b.opacity && (a = b),
                            b = b.parent;
                            k[a.id] = !0;
                            X.Na(a,
                            function(a) {
                                h[a.id] = !0
                            })
                        }
                    });
                    c = f.filter(function(a) {
                    	 
                        return h[a.id]
                    });
                    d = c.filter(function(a) {
                        return k[a.id]
                    })
                }
            }); (function() {
                var a = !1;
                t.Ce && X.A(A,
                function(b) {
                    if (0 !== b.U.a && 1 !== b.U.a) return a = !0,
                    !1
                });
                a ? (X.ac(A,
                function(a) {
                    if (a.opacity !== a.lc) {
                        var b = a.f;
                        if (b) {
                            for (var c = 0,
                            d = b.length - 1; 0 <= d; d--) c = Math.max(c, b[d].ic);
                            a.ic = c + a.opacity * a.U.a
                        } else a.ic = a.opacity * a.U.a
                    }
                }), X.A(A,
                function(a) {
                    if (a.opacity !== a.lc) {
                        for (var b = a.ic,
                        c = a; (c = c.parent) && c !== A;) b += c.opacity * c.U.a * t.Be;
                        a.wc = 0 < b ? 1 - Math.pow(1 - a.U.a, 1 / b) : 0;
                        a.lc = a.opacity
                    }
                })) : X.A(A,
                function(a) {
                    a.wc = 1;
                    a.lc = -1
                })
            })();
            
            return {
                Ye: c,
                Xe: d,
                R: f
            }
        }
        function e() {
            var a = A.ka || A.G;
            if (!a && !A.empty()) {
                var b = A.f[0].scale;
                X.A(A,
                function(c) {
                    if (c.R && c.scale !== b) return a = !0,
                    !1
                })
            } ! a && 0 < t.zd && X.A(A,
            function(b) {
                if (0 < b.T) return a = !0,
                !1
            });
            a = (a = a || 0 === t.cc) || t.cc < t.Ya / 2 + 0.5;
            if (!a) {
                var c = !1;
                X.A(A,
                function(a) {
                    if (a.selected) return c = !0,
                    !1
                });
                c && (a = a || t.cc < t.Ec / 2 + 0.5 + t.Hd * t.ng.a)
            }
            return a
        }
        function f() {
            if (t.o !== t.mb) return ! 0;
            var a = ["polygonPlainFill", "polygonPlainStroke", "polygonGradientFill", "polygonGradientStroke", "labelPlainFill"];
            X.A(A,
            function(b) {
                if (b.M) return a.push("polygonExposureShadow"),
                !1
            });
            for (var b = a.length - 1; 0 <= b; b--) {
                var c = a[b];
                if ( !! M[c] !== !!C[c]) return ! 0
            }
            return ! 1
        }
        function h() {
            function a(b, c, d, e) {
                function f(a, b, c, d, e) {
                    a[d] && (b -= c * m[d], a[d] = !1, e && (b += c * m[e], a[e] = !0));
                    return b
                }
                b = J.extend({},
                b);
                switch (d) {
                case "never":
                    b.labelPlainFill = !1;
                    break;
                case "always":
                case "auto":
                    b.labelPlainFill = !0
                }
                var g = 0;
                J.pa(b,
                function(a, b) {
                    a && (g += c * m[b])
                });
                b.polygonExposureShadow = !0;
                g += 2 * m.polygonExposureShadow;
                if (g <= e || (g = f(b, g, 2, "polygonExposureShadow")) <= e || (g = f(b, g, c, "polygonGradientFill", "polygonPlainFill")) <= e || (g = f(b, g, c, "polygonGradientStroke")) <= e || (g = f(b, g, c, "polygonPlainStroke")) <= e) return b;
                "auto" === d && (g = f(b, g, c, "labelPlainFill"));
                return b
            }
            var b = 0,
            c = 0;
            X.pd(A,
            function(a) {
                var d = 1;
                X.A(a,
                function() {
                    d++
                });
                b += d;
                c = Math.max(c, d)
            });
            var d = {};
            switch (t.Uf) {
            case "plain":
                d.polygonPlainFill = !0;
                break;
            case "gradient":
                d.polygonGradientFill = !0
            }
            switch (t.wg) {
            case "plain":
                d.polygonPlainStroke = !0;
                break;
            case "gradient":
                d.polygonGradientStroke = !0
            }
            M = a(d, b, t.Wh, t.Vh);
            C = a(d, 2 * c, "always", t.Gf);
            D = a(d, b, "always", t.Ff)
        }
        function l(a) {
            return function(b, c) {
                return b === r ? !0 === M[a] : !0 === (c ? C: D)[a]
            }
        }
        function c(a, b) {
            return function(c, d) {
                return a(c, d) && b(c, d)
            }
        }
        function b(a) {
            A.R = !0;
            X.qd(A,
            function(b) {
                if (b.wa && b.Y && (A.G || b.ka)) {
                    var c = b.f,
                    d = {
                        x: 0,
                        y: 0,
                        e: 0,
                        j: 0
                    },
                    e = !!b.L;
                    if (1 < x / a.e) {
                        var f;
                        for (f = c.length - 1; 0 <= f; f--) c[f].R = !1;
                        if (b.R && e) for (f = c.length - 1; 0 <= f; f--) if (b = c[f], 1 !== b.scale && (b.Pb(a, d), d.e = a.e / b.scale, d.j = a.j / b.scale), !1 === b.R) {
                            var e = b.u,
                            g = e.length;
                            if (K.Ga(b.u, 1 === b.scale ? a: d)) b.R = !0;
                            else for (var l = 0; l < g; l++) if (K.mf(e[l], e[(l + 1) % g], 1 === b.scale ? a: d)) {
                                b.R = !0;
                                if (b = b.D[l]) c[b.index].R = !0;
                                break
                            }
                        }
                    } else for (f = 0; f < c.length; f++) c[f].R = e
                }
            })
        }
        var m, n, r, p, s, u, q, v, x, z, y, B = new Pa(a),
        F = new Qa(a),
        G,
        N,
        t = a.options,
        A,
        R,
        M,
        D,
        C;
        a.d.i("stage:initialized",
        function(b, c, d, e) {
            y = b;
            x = d;
            z = e;
            n = y.Hb("wireframe", t.mb, !1);
            r = n.getContext("2d");
            r.o = t.mb;
            p = y.Hb("hifi", t.o, !1);
            s = p.getContext("2d");
            s.o = t.o;
            u = y.Hb("tmp", Math.max(t.o, t.mb), !0);
            q = u.getContext("2d");
            q.o = 1;
            v = [r, s, q];
            for (b = v.length - 1; 0 <= b; b--) c = v[b],
            c.scale(c.o, c.o);
            a.d.p("render:initialized", v)
        });
        a.d.i("stage:resized",
        function(a, b, c, d) {
            x = c;
            z = d;
            for (a = v.length - 1; 0 <= a; a--) b = v[a],
            b.scale(b.o, b.o)
        });
        a.d.i("model:loaded",
        function(b) {
            function c(a) {
                var b = 0;
                if (!a.empty()) {
                    for (var d = a.f,
                    e = d.length - 1; 0 <= e; e--) b = Math.max(b, c(d[e]));
                    b += 1
                }
                return a.Qe = b
            }
            A = b;
       
            R = !0;
            c(A);
            
            h();
            a.d.p("render:renderers:resolved", M, C, D)
        });
        var L = "groupFillType groupStrokeType wireframeDrawMaxDuration wireframeLabelDrawing finalCompleteDrawMaxDuration finalIncrementalDrawMaxDuration".split(" "),
        Q = ["groupLabelLightColor", "groupLabelDarkColor", "groupLabelColorThreshold", "groupUnexposureLabelColorThreshold"];
        a.d.i("options:changed",
        function(a) {
            function b(a, c, d, e) {
                y.yh(a, d);
                c.o = d;
                e && c.scale(d, d)
            }
            a.dataObject || (J.Za(a, L) && h(), J.Za(a, Q) && X.A(A,
            function(a) {
                a.Dc = -1
            }));
            var c = J.Q(a, "pixelRatio");
            a = J.Q(a, "wireframePixelRatio");
            if (c || a) c && b(p, s, t.o, !0),
            a && b(n, r, t.mb, !0),
            b(u, q, Math.max(t.o, t.mb), !1)
        });
        a.d.i("zoom:initialized",
        function(a) {
            G = a
        });
        a.d.i("timeline:initialized",
        function(a) {
            N = a
        });
        var I = [{
            id: "offsetPolygon",
            De: function(a) {
                if (0 < a.opacity && (!1 === a.open || !0 === a.selected) && a.va.Pa()) {
                    var b = a.va;
                    b.clear();
                    if (a.aa) {
                        var c = a.aa,
                        d = t.If;
                        0 < d ? (a = Math.min(1, d * Math.pow(1 - t.Jf * d, a.Qe)), ia.Kh(b, c, x + z >> 7, a)) : ia.bd(b, c)
                    }
                }
            }
        },
        {
            id: "label",
            De: function(a, b) {
                0 < a.V && B.k(a, b)
            }
        }].reverse(),
        E = [new
        function(a) {
        	  
            var b = Array(a.length);
       
            this.Yc = function(c, d, e) {
             
                if (0 !== c.length) {
                    var f, g, l = [],
                    h = c[0].Xa;
                   
                    for (f = 0; f < c.length; f++) g = c[f],
                    g.Xa !== h && (l.push(f), h = g.Xa);
                    l.push(f);
                     
                    for (var k = h = 0; k < l.length; k++) {
                        for (var m = l[k], n = a.length - 1; 0 <= n; n--) if (b[n]) {
                            var p = a[n];
                            d.save();
                            for (f = h; f < m; f++) g = c[f],
                            g.va.Pa() || (d.save(), g.lb(d), p.Lb.call(p, g, d, e), d.restore());
                            p.ob.call(p, d, e);
                            d.restore()
                        }
                        h = m
                    }
                }
            };
            this.fa = function(c, d) {
                for (var e = !1,
                f = a.length - 1; 0 <= f; f--) b[f] = a[f].fa(c, d),
                e |= b[f];
                return e
            };
            this.P = function(c, d) {
                for (var e = a.length - 1; 0 <= e; e--) if (b[e]) {
                    var f = a[e];
                    f.P.call(f, c, d)
                }
            };
            this.xa = function(c) {
                for (var d = a.length - 1; 0 <= d; d--) if (b[d]) {
                    var e = a[d];
                    e.xa.call(e, c)
                }
            };
            this.pf = function(c) {
                for (var d = a.length - 1; 0 <= d; d--) {
                    var e = a[d];
                    if (b[d]) for (var f = e.ib.length - 1; 0 <= f; f--) c[e.ib[f]] = !0
                }
            }
        } ([{
            ib: ["offsetPolygon"],
            fa: l("polygonExposureShadow"),
            P: function(a) {
                q.save();
                q.scale(a.o, a.o)
            },
            xa: function() {
                q.restore()
            },
            c: function() {},
            ob: function(a) {
                this.Pe && (this.Pe = !1, a.save(), a.setTransform(1, 0, 0, 1, 0, 0), a.drawImage(u, 0, 0, a.canvas.width, a.canvas.height, 0, 0, a.canvas.width, a.canvas.height), a.restore(), q.save(), q.setTransform(1, 0, 0, 1, 0, 0), q.clearRect(0, 0, u.width, u.height), q.restore())
            },
            Lb: function(a, b, c) {
                if (!a.open) {
                    var d = t.zd * a.opacity * a.T * (1 - a.fb) * a.parent.fb * (1.1 <= t.Oa ? 1 : (t.Oa - 1) / 0.1);
                    0 < d && (q.save(), q.beginPath(), a.lb(q), a.va.Kb(q), q.shadowBlur = c * b.o * d, q.shadowColor = t.Mf, q.fillStyle = "rgba(0, 0, 0, 1)", q.globalCompositeOperation = "source-over", q.globalAlpha = a.opacity, q.fill(), q.shadowBlur = 0, q.shadowColor = "transparent", q.globalCompositeOperation = "destination-out", q.fill(), q.restore(), this.Pe = !0)
                }
            }
        },
        {
            ib: ["offsetPolygon"],
            fa: function() {
                return ! 0
            },
            P: function() {
                function a(c) {
                    var d = c.U,
                    e = c.$a,
                    f = c.selected,
                    g = b(d.l * c.$ + (e ? t.Zf: 0) + (f ? t.kg: 0)),
                    l = b(d.s * c.ca + (e ? t.$f: 0) + (f ? t.lg: 0));
                    c = c.yd;
                    c.h = (d.h + (e ? t.Yf: 0) + (f ? t.jg: 0)) % 360;
                    c.s = l;
                    c.l = g;
                    return c
                }
                function b(a) {
                    return 100 < a ? 100 : 0 > a ? 0 : a
                }
                var d = [{
                    type: "fill",
                    fa: l("polygonPlainFill"),
                    qc: function(b, c) {
                        c.fillStyle = S.Wb(a(b))
                    }
                },
                {
                    type: "fill",
                    fa: l("polygonGradientFill"),
                    qc: function(c, d) {
                        var e = c.eb,
                        f = a(c),
                        e = d.createRadialGradient(c.x, c.y, 0, c.x, c.y, e * t.Qf);
                        e.addColorStop(0, S.J((f.h + t.Nf) % 360, b(f.s + t.Pf), b(f.l + t.Of)));
                        e.addColorStop(1, S.J((f.h + t.Rf) % 360, b(f.s + t.Tf), b(f.l + t.Sf)));
                        c.va.Kb(d);
                        d.fillStyle = e
                    }
                },
                {
                    type: "stroke",
                    fa: c(l("polygonPlainStroke"),
                    function() {
                        return 0 < t.Ya
                    }),
                    qc: function(a, c) {
                        var d = a.U,
                        e = a.$a,
                        f = a.selected;
                        c.strokeStyle = S.J((d.h + t.Ld + (e ? t.Ad: 0) + (f ? t.Id: 0)) % 360, b(d.s * a.ca + t.Nd + (e ? t.Cd: 0) + (f ? t.Kd: 0)), b(d.l * a.$ + t.Md + (e ? t.Bd: 0) + (f ? t.Jd: 0)));
                        c.lineWidth = t.Ya * Math.pow(t.xb, a.la - 1)
                    }
                },
                {
                    type: "stroke",
                    fa: c(l("polygonGradientStroke"),
                    function() {
                        return 0 < t.Ya
                    }),
                    qc: function(a, c) {
                        var d = a.eb * t.sg,
                        e = a.U,
                        f = Math.PI * t.og / 180,
                        d = c.createLinearGradient(a.x + d * Math.cos(f), a.y + d * Math.sin(f), a.x + d * Math.cos(f + Math.PI), a.y + d * Math.sin(f + Math.PI)),
                        g = a.$a,
                        l = a.selected,
                        f = (e.h + t.Ld + (g ? t.Ad: 0) + (l ? t.Id: 0)) % 360,
                        h = b(e.s * a.ca + t.Nd + (g ? t.Cd: 0) + (l ? t.Kd: 0)),
                        e = b(e.l * a.$ + t.Md + (g ? t.Bd: 0) + (l ? t.Jd: 0));
                        d.addColorStop(0, S.J((f + t.pg) % 360, b(h + t.rg), b(e + t.qg)));
                        d.addColorStop(1, S.J((f + t.tg) % 360, b(h + t.vg), b(e + t.ug)));
                        c.strokeStyle = d;
                        c.lineWidth = t.Ya * Math.pow(t.xb, a.la - 1)
                    }
                }],
                e = Array(d.length);
                return function(a, b) {
                    for (var c = d.length - 1; 0 <= c; c--) e[c] = d[c].fa(a, b);
                    this.Oh = d;
                    this.vf = e
                }
            } (),
            xa: function() {},
            c: function() {},
            ob: function() {},
            Lb: function(a, b) {
                if (0 !== a.opacity && !a.open) {
                    var c = this.Oh,
                    d = this.vf;
                    b.beginPath();
                    a.va.Kb(b);
                    for (var e = !1,
                    f = !1,
                    g = c.length - 1; 0 <= g; g--) {
                        var l = c[g];
                        if (d[g]) switch (l.qc(a, b), l.type) {
                        case "fill":
                            e = !0;
                            break;
                        case "stroke":
                            f = !0
                        }
                    }
                    c = a.opacity * a.U.a;
                    d = !a.empty();
                    g = t.Ce ? a.wc: 1;
                    e && (e = d && a.Y ? 1 - a.f.reduce(function(a, b) {
                        return a + b.ba * b.Uc
                    },
                    0) / a.f.length * (1 - t.Be) : 1, b.globalAlpha = c * e * g, Ra(b));
                    f && (b.globalAlpha = c * (d ? t.Rg: 1) * g, b.closePath(), Sa(b), b.stroke())
                }
            }
        },
        {
            ib: ["offsetPolygon"],
            fa: function() {
                return 0 < t.Ec
            },
            P: function() {},
            xa: function() {},
            c: function() {},
            ob: function() {},
            Lb: function(a, b, c) {
                if (a.selected) {
                    b.globalAlpha = a.sa;
                    b.beginPath();
                    var d = Math.pow(t.xb, a.la - 1);
                    b.lineWidth = t.Ec * d;
                    b.strokeStyle = t.mg;
                    var e = t.Hd;
                    0 < e && (b.shadowBlur = e * d * c * b.o, b.shadowColor = t.Gd);
                    a.va.Kb(b);
                    b.closePath();
                    b.stroke()
                }
            }
        },
        {
            ib: [],
            fa: function() {
                return ! 0
            },
            P: function() {},
            xa: function() {},
            c: function() {},
            ob: function() {},
            Lb: function(a, b) {
                function c(d) {
                    var e = Na.Ub.width,
                    f = Na.Ub.height,
                    g = K.jf(a.aa, a.ra, e / f),
                    g = Math.min(Math.min(0.9 * g, 0.5 * a.C.j) / f, 0.5 * a.C.e / e);
                    b.save();
                    b.translate(a.x, a.y);
                    b.globalAlpha = a.opacity * a.V;
                    b.scale(g, g);
                    b.translate( - e / 2, -f / 2);
                    d(b);
                    b.restore()
                }
                
                a.Aa && c(function(a) {
                 
                    Na.ff(a)
                })
            }
        },
        {
            ib: ["label"],
            fa: l("labelPlainFill"),
            P: function() {},
            xa: function() {},
            c: function() {},
            ob: function() {},
            Lb: function(a, b, c) {
                if (a.group.label && 0 < a.opacity && 0 < a.V && !a.open) {
                    if ("auto" === a.Ic) {
                        var d = a.yd,
                        e = d.h + d.s << 9 + d.l << 16;
                        a.Dc !== e && (a.Hc = S.cf(d) > (0 > a.T ? t.xg: t.ag) ? t.bg: t.gg, a.Dc = e)
                    } else a.Hc = a.Ic;
                    b.fillStyle = a.Hc;
                    b.globalAlpha = a.V * a.opacity * (a.empty() ? 1 : t.Qg);
                    Ta(a, b, c) || (e = a.eb, c = e / 15, d = 0.5 * e / 15, e = e / 5, b.fillRect(a.x - d, a.y - d, c, c), b.fillRect(a.x - d - e, a.y - d, c, c), b.fillRect(a.x - d + e, a.y - d, c, c))
                }
            }
        }].reverse())];
        this.q = function() {
            m = ra.Cg(function() {
                return ja.Df()
            },
            "CarrotSearchFoamTree", 12096E5)(Ua());
            F.q()
        };
        this.clear = function() {
            r.clearRect(0, 0, x, z);
            s.clearRect(0, 0, x, z)
        };
        this.Yc = function() {
            function a() {
                window.clearTimeout(b);
                b = setTimeout(function() {
                    if (f()) {
                        var a = !e();
                        k(null, c.R, s, a);
                        J.defer(function() {
                            O.Lh()
                        })
                    }
                },
                Math.max(t.Xh, 3 * g.Ue.Mc, 3 * g.Ue.Lc))
            }
            var b, c;
            return function(b) {
                Va(F);
                c = d();
                
                var e = null !== c.Xe,
                f = 0 < y.Eb("hifi"),
                g = f && (e || !b);
                b = e || R || !b;
                R = !1;
                f && !g && O.Mh();
                
                 
                
                k(c.Xe, c.Ye, g ? s: r, b);
                X.Na(A,
                function(a) {
                    a.ka = !1;
                    a.G = !1
                });
                g || a();
                t.we(e)
            }
        } ();
        this.c = function(a) {
            a = a || {};
            Va(F);
            A.G = !0;
            var b = d(),
            c = J.ya(a.pixelRatio, t.o),
            e = y.Hb("export", c, !0),
            f = e.getContext("2d");
            f.scale(c, c);
            if (c = J.Q(a, "backgroundColor")) f.save(),
            f.fillStyle = a.backgroundColor,
            f.fillRect(0, 0, x, z),
            f.restore();
            k(c ? [] : null, b.Ye, f, !0);
           
            return e.toDataURL(J.ya(a.format, "image/png"), J.ya(a.quality, 0.8))
        };
        var O = function() {
            function a(b, d, e, f) {
                function g(a, b, c, d) {
                    return N.w.m({
                        opacity: y.Eb(a)
                    }).O({
                        duration: c,
                        B: {
                            opacity: {
                                end: b,
                                I: d
                            }
                        },
                        N: function() {
                            y.Eb(a, this.opacity)
                        }
                    }).ga()
                }
                var l = J.Fc(y.Eb(b), 1),
                h = J.Fc(y.Eb(e), 0);
                if (!l || !h) {
                    for (var k = c.length - 1; 0 <= k; k--) c[k].stop();
                    c = [];
                    l || c.push(g(b, 1, d, W.kb));
                    h || c.push(g(e, 0, f, W.Re));
                    return N.w.m({}).Fa(c).start()
                }
            }
            var b, c = [];
            return {
                Mh: function() {
                    t.vc ? 1 !== n.style.opacity && (n.style.visibility = "visible", p.style.visibility = "hidden", n.style.opacity = 1, p.style.opacity = 0) : b && b.ab() || (b = a("wireframe", t.vd, "hifi", t.vd))
                },
                Lh: function() {
                    t.vc ? (p.style.visibility = "visible", n.style.visibility = "hidden", n.style.opacity = 0, p.style.opacity = 1) : a("hifi", t.$e, "wireframe", t.$e)
                }
            }
        } ();
        Va = function(a) {
            a.apply()
        };
        Ra = function(a) {
            a.fill()
        };
        Sa = function(a) {
            a.stroke()
        };
        return this
    }
    var Ra, Sa, Va;
    function Pa(a) {
        function g(a) {
            "undefined" !== typeof a.groupLabelFontFamily && (d.fontFamily = a.groupLabelFontFamily);
            "undefined" !== typeof a.groupLabelLineHeight && (d.lineHeight = a.groupLabelLineHeight);
            "undefined" !== typeof a.groupLabelHorizontalPadding && (d.Ab = a.groupLabelHorizontalPadding);
            "undefined" !== typeof a.groupLabelVerticalPadding && (d.Rb = a.groupLabelVerticalPadding);
            "undefined" !== typeof a.groupLabelMaxTotalHeight && (d.Gb = a.groupLabelMaxTotalHeight);
            "undefined" !== typeof a.groupLabelMaxFontSize && (d.Fb = a.groupLabelMaxFontSize)
        }
        var k = a.options,
        d = {},
        e, f, h = {
            groupLabel: ""
        };
        a.d.i("api:initialized",
        function(a) {
            e = a
        });
        a.d.i("render:initialized",
        function(a) {
            f = a[0]
        });
        a.d.i("options:changed", g);
        g(a.options);
        this.c = function(a) {
            if (!a.aa) return ! 1;
            var c = a.group.label;
            if (!c) return ! 1;
            k.dg && !a.Aa && (h.labelText = c, e.zc(k.cg, a, h), c = h.labelText);
            a.gc = c;
            a.Kc != c && (a.Cb = !0);
            return a.Cb
        };
        this.k = function(a, c) {
            var b = a.gc;
            void 0 === b && (this.c(a), b = a.gc);
            a.gc = void 0;
            if (b) {
                var e = a.aa;
                if (e) {
                    var g = a.ra;
                    if (a.Qa.Pa() || a.Cb || Math.abs(g.ea - a.jd) / g.ea > k.hg) {
                        a.Kc = b;
                        a.Qa.clear();
                        var h = k.Ed / (a.scale * c);
                        g.ea >= b.length * h * h / Math.tan(k.eg * Math.PI / 2) && (a.Jc = za.ud(d, f, a.Qa, b, e, a.C, g, h, !1, !1), a.jd = g.ea, a.af = g.x, a.bf = g.y);
                        a.Cb = !1
                    }
                }
            }
        };
        Ta = this.n = function(a, c, b) {
            if (a.Qa.Pa() || a.Jc * a.scale * b < k.Ed) return ! 1;
            c.save();
            c.translate(a.x - a.af, a.y - a.bf);
            a.Qa.Kb(c);
            c.restore();
            return ! 0
        }
    }
    var Ta;
    function Qa(a) {
        function g(a, c) {
            var d = a.f,
            e = d.length,
            f, g, h = l.eb;
            for (f = 0; f < e; f++) g = d[f],
            g.yb = (180 * (Math.atan2(g.x - a.x, g.y - a.y) + c) / Math.PI + 180) / 360,
            g.dc = Math.min(1, Math.sqrt(K.c(g, a)) / h)
        }
        function k(a, c) {
            var d = a.f,
            e = d.length,
            f, g, h = 0,
            k = Number.MAX_VALUE,
            l = Math.sin(c),
            x = Math.cos(c);
            for (f = 0; f < e; f++) {
                g = d[f];
                var z = g.x * l + g.y * x;
                h < z && (h = z);
                k > z && (k = z);
                g.yb = z;
                g.dc = 1
            }
            for (f = 0; f < e; f++) g = d[f],
            g.yb = (g.yb - k) / (h - k)
        }
        function d(a, c, d, e) {
            c = c[e];
            return c + (d[e] - c) * a
        }
        var e = {
            radial: g,
            linear: k
        },
        f = a.options,
        h,
        l,
        c = {
            groupColor: null,
            labelColor: null
        };
        a.d.i("model:loaded",
        function(a) {
            l = a
        });
        a.d.i("api:initialized",
        function(a) {
            h = a
        });
        this.q = function() {};
        this.apply = function() {
            function a(e) {
                if (e.Y && e.wa) {
                    var g = e.f,
                    k, l;
                    if (e.ka || e.Wa || q) {
                        0 === e.la ? n(e, f.oh * Math.PI / 180) : r(e, f.sh * Math.PI / 180);
                        for (k = g.length - 1; 0 <= k; k--) {
                            l = g[k];
                            l.Wa = !0;
                            var G = l.yb,
                            N, t, A, R, M = l.xd;
                            0 === e.la ? (N = d(G, p, s, "h"), t = (x + (1 - x) * l.dc) * d(G, p, s, "s"), A = (1 + (0 > l.T ? v * (l.T + 1) : v) * (1 - l.dc)) * d(G, p, s, "l"), R = d(G, p, s, "a")) : (A = e.U, N = A.h, t = A.s, A = m(A.l, G, f.th, f.uh), R = e.xd.a);
                            M.h = N;
                            M.s = t;
                            M.l = A;
                            M.a = R;
                            N = l.U;
                            l.Aa ? (N.h = 0, N.s = 0, N.l = 90, N.a = 1) : (N.h = M.h, N.s = M.s, N.l = M.l, N.a = M.a);
                            q && !l.Aa && (c.groupColor = N, c.labelColor = "auto", h.zc(u, l, c,
                            function(a) {
                                a.ratio = G
                            }), l.U = S.X(c.groupColor), l.U.a = J.Q(c.groupColor, "a") ? c.groupColor.a: 1, "auto" !== c.labelColor && (l.Ic = S.of(c.labelColor)))
                        }
                        e.Wa = !1
                    }
                    for (k = g.length - 1; 0 <= k; k--) a(g[k])
                }
            }
            function m(a, b, c, d) {
                var e = 0 > a + c * d ? 0 : 100 < a + c * d ? 100 : a + c * d;
                return e + b * ((0 > a - c * (1 - d) ? 0 : 100 < a - c * (1 - d) ? 100 : a - c * (1 - d)) - e)
            }
            var n = e[f.nh] || g,
            r = k,
            p = f.xh,
            s = f.qh,
            u = f.Kf,
            q = f.Lf,
            v = f.rh,
            x = f.vh;
            a(l)
        };
        return this
    };
    function Da() {
        this.Sb = this.ed = this.Mb = this.Te = this.e = this.Ze = this.da = this.y = this.x = this.id = 0;
        this.u = this.parent = this.f = null;
        this.C = {
            x: 0,
            y: 0,
            e: 0,
            j: 0
        };
        this.D = null;
        this.gc = void 0;
        this.Kc = "";
        this.sc = !1;
        this.dc = this.yb = 0;
        this.xd = {
            h: 0,
            s: 0,
            l: 0,
            a: 0,
            model: "hsla"
        };
        this.U = {
            h: 0,
            s: 0,
            l: 0,
            a: 0,
            model: "hsla"
        };
        this.yd = {
            h: 0,
            s: 0,
            l: 0,
            model: "hsl"
        };
        this.Dc = -1;
        this.Ic = "auto";
        this.Hc = "#000";
        this.Qe = this.la = this.index = this.Jc = 0;
        this.Aa = !1;
        this.Lg = null;
        this.ea = this.Zd = 0;
        this.R = !1;
        this.aa = null;
        this.ra = {
            x: 0,
            y: 0,
            ea: 0
        };
        this.eb = 0;
        this.Sc = this.L = null;
        this.Cb = this.Wa = this.G = this.ka = this.Ja = this.wa = this.Y = this.Jb = !1;
        this.ca = this.$ = this.sa = this.V = this.opacity = this.scale = 1;
        this.ba = 0;
        this.Uc = 1;
        this.fb = this.T = this.Db = 0;
        this.selected = this.$a = this.Rc = this.open = this.M = !1;
        this.bf = this.af = this.jd = this.Xa = 0;
        this.Qa = new ha;
        this.va = new ha;
        this.ic = 0;
        this.wc = 1;
        this.lc = -1;
        this.empty = function() {
            return ! this.f || 0 === this.f.length
        };
        var a = [];
        this.Xb = function(d) {
            a.push(d)
        };
        this.oc = function(d) {
            J.Ge(a, d)
        };
        var g = {
            scale: 1
        };
        this.Nc = function() {
            var d = !1;
            this.scale = 1;
            for (var f = 0; f < a.length; f++) d = a[f].Wd(this, g) || d,
            this.scale *= g.scale;
            return d
        };
        this.lb = function(d) {
            for (var f = 0; f < a.length; f++) a[f].lb(this, d)
        };
        this.Ob = function(d, f) {
            f.x = d.x;
            f.y = d.y;
            for (var g = 0; g < a.length; g++) a[g].Ob(this, f, f);
            return f
        };
        this.Pb = function(d, f) {
            f.x = d.x;
            f.y = d.y;
            for (var g = 0; g < a.length; g++) a[g].Pb(this, f, f);
            return f
        };
        var k = [];
        this.nb = function(a) {
            k.push(a)
        };
        this.Xc = function(a) {
            J.Ge(k, a)
        };
        var d = {
            opacity: 1,
            ca: 1,
            $: 1,
            V: 1,
            sa: 1
        };
        this.hc = function() {
            if (0 !== k.length) {
                this.sa = this.V = this.$ = this.ca = this.opacity = 1;
                for (var a = k.length - 1; 0 <= a; a--)(0, k[a])(this, d),
                this.opacity *= d.opacity,
                this.$ *= d.$,
                this.ca *= d.ca,
                this.V *= d.V,
                this.sa *= d.sa
            }
        }
    };
    function Wa(a) {
        var g = this,
        k, d, e, f, h = a.options,
        l, c;
        a.d.i("stage:initialized",
        function(b, c, l, r) {
            e = l;
            f = r;
            k = b.Hb("titlebar", h.o, !1);
            d = k.getContext("2d");
            d.o = h.o;
            d.scale(d.o, d.o);
            a.d.p("titlebar:initialized", g)
        });
        a.d.i("stage:resized",
        function(a, c, g, h) {
            e = g;
            f = h;
            d.scale(d.o, d.o)
        });
        a.d.i("zoom:initialized",
        function(a) {
            c = a
        });
        a.d.i("api:initialized",
        function(a) {
            l = a
        });
        a.d.i("model:loaded",
        function() {
            d.clearRect(0, 0, e, f)
        });
        this.update = function(a) {
            d.clearRect(0, 0, e, f);
            if (a) {
                var g = h.Th,
                k = h.Sh,
                r = Math.min(f / 2, h.cd + 2 * g),
                p = r - 2 * g,
                s = e - 2 * k;
                if (! (0 > p || 0 > s)) {
                    var u = a.Qa.Pa() ? 0 : a.Jc * a.scale * c.scale(),
                    q,
                    v = {
                        titleBarText: a.Kc,
                        titleBarTextColor: h.We,
                        titleBarBackgroundColor: h.Ve,
                        titleBarMaxFontSize: h.cd,
                        titleBarShown: u <= h.Kg
                    };
                    a.Aa ? q = ua.Ne("B`ssnu!Rd`sbi!Gn`lUsdd!whrt`mh{`uhno/!Bmhbj!uid!mnfn!un!fn!un!iuuq;..b`ssnurd`sbi/bnl.gn`lusdd!gns!lnsd!edu`hmr/") : (l.zc(h.Ph, a, v,
                    function(a) {
                        a.titleBarWidth = s;
                        a.titleBarHeight = p;
                        a.labelFontSize = u
                    }), q = v.titleBarText);
                    q && 0 !== q.length && v.titleBarShown && (a = c.gd(a.Ob(a, {}), {}).y > f / 2, g = {
                        x: k,
                        y: a ? g: f - r + g,
                        e: s,
                        j: p
                    },
                    k = K.Tb(g), d.fillStyle = h.Ve, d.fillRect(0, a ? 0 : f - r, e, r), d.fillStyle = h.We, za.ud({
                        fontFamily: h.Qh || h.fg,
                        Fb: v.cd,
                        Ab: 0,
                        Rb: 0,
                        Gb: 1
                    },
                    d, d, q, k, g, {
                        x: g.x + g.e / 2,
                        y: g.y + g.j / 2
                    },
                    h.Rh, !0, !0))
                }
            }
        }
    };
    function Xa(a) {
        function g(a, b, d) {
            v = !0;
            m && m.stop();
            r && r.stop();
            return h(c.reset(a), b, d).H(function() {
                v = !1
            })
        }
        function k(b) {
            c.update(b);
            u.G = !0;
            a.d.p("foamtree:dirty", !0)
        }
        function d(a, b) {
            return c.c((0 !== c.k() ? 0.35 : 1) * a, (0 !== c.n() ? 0.35 : 1) * b)
        }
        function e() {
            if (1 === b.gb) {
                var a = Math.round(1E4 * c.k()) / 1E4;
                0 !== a && (n.Vc = a, m = q.w.Qb(n).O({
                    duration: 500,
                    B: {
                        x: {
                            start: a,
                            end: 0,
                            I: W.kb
                        }
                    },
                    N: function() {
                        c.c(n.x - n.Vc, 0);
                        k(1);
                        n.Vc = n.x
                    }
                }).start())
            }
        }
        function f() {
            if (1 === b.gb) {
                var a = Math.round(1E4 * c.n()) / 1E4;
                0 !== a && (p.Wc = a, r = q.w.Qb(p).O({
                    duration: 500,
                    B: {
                        y: {
                            start: a,
                            end: 0,
                            I: W.kb
                        }
                    },
                    N: function() {
                        c.c(0, p.y - p.Wc);
                        k(1);
                        p.Wc = p.y
                    }
                }).start())
            }
        }
        function h(a, c, d) {
            return a ? q.w.Qb(b).O({
                duration: void 0 === c ? 700 : c,
                B: {
                    gb: {
                        start: 0,
                        end: 1,
                        I: d || W.Se
                    }
                },
                N: function() {
                    k(b.gb)
                }
            }).Ha() : (new T).F().K()
        }
        function l(a) {
            return function() {
                return v ? (new T).F().K() : a.apply(this, arguments)
            }
        }
        var c = new ma(a),
        b = {
            gb: 1
        },
        m,
        n = {
            nd: 0,
            x: 0,
            Vc: 0
        },
        r,
        p = {
            od: 0,
            y: 0,
            Wc: 0
        },
        s = this,
        u,
        q,
        v = !1;
        a.d.i("model:loaded",
        function(a) {
            u = a;
            c.reset(!1);
            c.update(1)
        });
        a.d.i("timeline:initialized",
        function(a) {
            q = a
        });
        this.q = function() {
            a.d.p("zoom:initialized", this)
        };
        this.reset = function(a, b) {
            c.hb(1);
            return g(!0, a, b)
        };
        this.normalize = l(function(a, b) {
            c.Zb(1) ? g(!1, a, b) : s.$d()
        });
        this.$d = function() {
            e();
            f()
        };
        this.c = l(function(a, b, c, d) {
            return s.Nb(a.C, b, c, d)
        });
        this.pb = l(function(a, b, d, e) {
            return h(c.pb(a, b), d, e)
        });
        this.Nb = l(function(a, b, d, e) {
            return h(c.Nb(a, b), d, e)
        });
        this.Uh = l(function(a, b) {
            c.Nb(a, b) && k(1)
        });
        this.Ng = l(function(a, c) {
            1 === b.gb && d(a, c) && k(1)
        });
        this.sf = l(function(a, b) {
            c.pb(a, b) && k(1)
        });
        this.rf = l(function(a, b, e, f) {
            a = 0 | c.pb(a, b); (a |= d(e, f)) && k(1)
        });
        this.Og = l(function(a, g, h) {
            1 === b.gb && (m = q.w.Qb(n).O({
                duration: a / 0.03,
                B: {
                    nd: {
                        start: g,
                        end: 0,
                        I: W.kb
                    }
                },
                N: function() {
                    c.c(n.nd, 0) && k(1);
                    e()
                }
            }).start(), r = q.w.Qb(p).O({
                duration: a / 0.03,
                B: {
                    od: {
                        start: h,
                        end: 0,
                        I: W.kb
                    }
                },
                N: function() {
                    d(0, p.od) && k(1);
                    f()
                }
            }).start())
        });
        this.Pg = function() {
            m && 0 === c.k() && m.stop();
            r && 0 === c.n() && r.stop()
        };
        this.$b = function(a, b) {
            c.$b(a, b)
        };
        this.hb = function(a) {
            return c.hb(a)
        };
        this.Zb = function(a) {
            return c.Zb(a)
        };
        this.Qc = function() {
            return c.Qc()
        };
        this.absolute = function(a, b) {
            return c.absolute(a, b)
        };
        this.gd = function(a, b) {
            return c.gd(a, b)
        };
        this.scale = function() {
            return c.scale()
        };
        this.content = function(a, b, d, e) {
            c.content(a, b, d, e)
        }
    };
    function Ya(a, g, k) {
        function d(a) {
            var c = [];
            X.A(b,
            function(b) {
                a(b) && c.push(b.group)
            });
            return {
                groups: c
            }
        }
        function e(a, b) {
            var d = c.options,
            e = d.Dh,
            f = d.Ch,
            d = d.Zc,
            g = 0 < e + f ? d: 0,
            h = [];
            $.qa(a, $.ha(a, c.options.ad),
            function(a, d, k) {
                d = "groups" === c.options.$c ? k: d;
                a.f && (a = n.w.m(a).Ia(g * (f + e * d)).call(b).ga(), h.push(a))
            });
            return n.w.m({}).Fa(h).Ha()
        }
        function f(a) {
            m.c(h, {
                qf: a
            })
        }
        function h() {
            c.d.p("repaint:before");
            x.Yc(this.qf)
        }
        var l = this,
        c = {
            d: new ta,
            options: g,
            Mg: k
        },
        b,
        m = new ba,
        n = new va(m),
        r = H.create(),
        p = new ka(c),
        s = new Xa(c),
        u = new Ba(c),
        q = new Ca(c.options),
        v = new Ma(c),
        x = new Oa(c, m),
        z = new Ja(c);
        new Wa(c);
        var y = new Fa(c),
        B = new Ga(c),
        F = new Ha(c),
        G = new Ia(c);
        c.d.i("stage:initialized",
        function(a, b, c, d) {
            M.Eg(c, d)
        });
        c.d.i("stage:resized",
        function(a, b, c, d) {
            M.Bh(a, b, c, d)
        });
        c.d.i("interaction:reset",
        function() {
            E(!0)
        });
        c.d.i("foamtree:dirty", f);
        this.q = function() {
            c.d.p("timeline:initialized", n);
            b = q.q();
            p.q(a);
            u.q();
            v.q();
            x.q();
            z.q();
            y.q();
            B.q();
            s.q();
            F.q();
            G.q()
        };
        this.Ma = function() {
            n.c();
            Q.stop();
            m.k();
            p.Ma()
        };
        var N = "groupLabelFontFamily groupLabelLineHeight groupLabelHorizontalPadding groupLabelVerticalPadding groupLabelDottingThreshold groupLabelMaxTotalHeight groupLabelMinFontSize groupLabelMaxFontSize groupLabelDecorator".split(" "),
        t = "rainbowColorDistribution rainbowLightnessDistribution rainbowColorDistributionAngle rainbowLightnessDistributionAngle rainbowColorModelStartPoint rainbowLightnessCorrection rainbowSaturationCorrection rainbowStartColor rainbowEndColor rainbowHueShift rainbowHueShiftCenter rainbowSaturationShift rainbowSaturationShiftCenter rainbowLightnessShift rainbowLightnessShiftCenter".split(" "),
        A = !1,
        R = ["groupBorderRadius", "groupBorderRadiusCorrection", "groupBorderWidth", "groupInsetWidth", "groupBorderWidthScaling"];
        this.Ua = function(a) {
            c.d.p("options:changed", a);
            J.Za(a, N) && X.A(b,
            function(a) {
                a.Cb = !0
            });
            J.Za(a, t) && (b.Wa = !0);
            J.Za(a, R) && (A = !0)
        };
        this.reload = function() {
            D.reload()
        };
        this.Tb = function(a) {
            A ? M.Ig(a) : (b.G = !0, f(a))
        };
        this.X = function() {
            p.k()
        };
        this.reset = function() {
            return E(!1)
        };
        this.J = x.c;
        this.ia = function() {
            var a = {};
            return function(b, c) {
                var d = q.c(b);
                return d ? u.c(a, d, c) : null
            }
        } ();
        this.ha = function() {
            var a = {};
            return function(b) {
                return (b = q.c(b)) ? u.n(a, b) : null
            }
        } ();
        this.Ga = function() {
            var a = {};
            return function(b) {
                return (b = q.c(b)) ? u.k(a, b) : null
            }
        } ();
        this.Ub = function() {
            this.n({
                groups: d(function(a) {
                    return a.group.selected
                }),
                newState: !0,
                keepPrevious: !1
            });
            this.k({
                groups: d(function(a) {
                    return a.group.open
                }),
                newState: !0,
                keepPrevious: !1
            });
            this.c({
                groups: d(function(a) {
                    return a.group.exposed
                }),
                newState: !0,
                keepPrevious: !1
            })
        };
        this.ma = function() {
            return d(function(a) {
                return a.M
            })
        };
        this.c = function(a) {
            return D.submit(function() {
                return y.ub(q.k(a, "exposed", !1), !1, !0, !1)
            })
        };
        this.qa = function() {
            return d(function(a) {
                return a.open
            })
        };
        this.k = function(a) {
            return D.submit(function() {
                return F.Sa(q.k(a, "open", !0), !1, !1)
            })
        };
        this.ua = function() {
            return d(function(a) {
                return a.selected
            })
        };
        this.n = function(a) {
            return D.submit(function() {
                G.select(q.k(a, "selected", !0), !1);
                return (new T).F().K()
            })
        };
        this.Wb = function(a) {
            return s.c(q.c(a), g.ec, g.tc, W.W(g.uc))
        };
        this.Ea = function(a) {
            return z.Ua[a]
        };
        this.Vb = function() {
            var a = ca;
            return {
                frames: a.frames,
                totalTime: a.totalTime,
                lastFrameTime: a.Lc,
                lastInterFrameTime: a.Mc,
                fps: a.wd
            }
        };
        var M = function() {
            function a(c, e) {
                var f = g.tb && g.tb.boundary;
                f && 2 < f.length ? b.u = f.map(function(a) {
                    return {
                        x: c * a.x,
                        y: e * a.y
                    }
                }) : b.u = [{
                    x: 0,
                    y: 0
                },
                {
                    x: c,
                    y: 0
                },
                {
                    x: c,
                    y: e
                },
                {
                    x: 0,
                    y: e
                }];
                d()
            }
            function d() {
                b.ka = !0;
                b.L = b.u;
                b.C = K.C(b.u, b.C);
                K.k(b.u, b);
                K.k(b.u, b.ra);
                b.eb = Math.sqrt(b.ra.ea / Math.PI)
            }
            return {
                Eg: a,
                Bh: function(d, e, g, h) {
                    I.stop();
                    var k = g / d,
                    l = h / e;
                    X.pd(b,
                    function(a) {
                        a.x = a.x * k + (Math.random() - 0.5) * g / 1E3;
                        a.y = a.y * l + (Math.random() - 0.5) * h / 1E3
                    });
                    a(g, h);
                    b.Ja = !0;
                    v.c(I.fc, !0, !1,
                    function(a) {
                        var b = a.f;
                        if (b) {
                            v.n(a);
                            for (var c = b.length - 1; 0 <= c; c--) {
                                var d = b[c];
                                d.e = d.Mb
                            }
                            a.Ja = !0
                        }
                    }) ? f(!1) : (v.J(b), c.options.Fe ? (f(!1), Q.Ah(), Q.pc()) : (v.k(I.fc), b.Wa = !0, f(!1)))
                },
                Ig: function(a) {
                    var c = !1;
                    b.empty() || (d(), Q.ab() || (c = v.c(I.fc, !1, !1), f(a)));
                    return c
                }
            }
        } (),
        D = function() {
            function a() {
                0 === g.Tc && s.reset(0);
                c.options.ve(g.tb);
                q.J(g.tb);
                c.d.p("model:loaded", b, X.Cc(b));
                var e;
                b.empty() || (b.open = !0, b.Jb = !0, g.Fe ? e = Q.pc() : (Q.Sg(), e = h()), d(), 0 < g.Zc ? (x.clear(), p.c(1)) : e = V([e, f(1)]));
                c.options.ue(g.tb);
                e && (c.options.ze(), e.H(function() {
                    m.c(c.options.ye)
                }))
            }
            function d() {
                var a = g.Ba,
                b = g.mc;
                g.Ba = 0;
                g.mc = 0;
                l.Ub();
                g.Ba = a;
                g.mc = b
            }
            function f(a, b) {
                return 0 === g.td || b ? (p.c(a), (new T).F().K()) : n.w.m({
                    opacity: p.c()
                }).dd(2).O({
                    duration: g.td,
                    B: {
                        opacity: {
                            end: a,
                            I: W.W(g.Ef)
                        }
                    },
                    N: function() {
                        p.c(this.opacity)
                    }
                }).Ha()
            }
            function h() {
                X.Na(b,
                function(a) {
                    a.wa = !1
                });
                var a = new T,
                c = new na(a.F);
                c.c();
                b.wa = !0;
                B.c(b).H(c.k);
                e(b,
                function Ka() {
                    this.Y && (this.ka = this.wa = !0, c.c(), B.c(this).H(c.k), c.c(), e(this, Ka).H(c.k))
                });
                return a.K()
            }
            function k() {
                for (var a = 0; a < u.length; a++) {
                    var b = u[a],
                    c = b.action();
                    J.Q(c, "then") ? c.H(b.md.F) : b.md.F()
                }
                u = []
            }
            var r = !1,
            u = [];
            return {
                reload: function() {
                    r || (b.empty() ? a() : (n.c(), Q.stop(), r = !0, V(0 < g.Tc ? [B.k(), E(!1)] : [f(0)]).H(function() {
                        f(0, !0);
                        r = !1;
                        a();
                        J.defer(k)
                    })))
                },
                submit: function(a) {
                    if (r) {
                        var b = new T;
                        u.push({
                            action: a,
                            md: b
                        });
                        return b.K()
                    }
                    return a()
                }
            }
        } (),
        C,
        L = new na(function() {
            C.F()
        }),
        Q = function() {
            function a() {
                d || (L.n() && (C = new T), L.c(), b(), d = !0, m.repeat(c));
                return C.K()
            }
            function b() {
                h = r.now()
            }
            function c() {
                var b = r.now() - h > g.zh,
                b = v.c(function(b) {
                    b.wa = !0;
                    I.Ag(b);
                    L.c();
                    B.c(b).H(L.k);
                    L.c();
                    e(b,
                    function() {
                        this.Jb = !0;
                        a()
                    }).H(L.k)
                },
                !0, b) || b;
                f(!0);
                b && (d = !1, L.k());
                return b
            }
            var d = !1,
            h;
            return {
                Sg: function() {
                    v.k(I.fc)
                },
                pc: a,
                Ah: b,
                ab: function() {
                    return ! L.n()
                },
                stop: function() {
                    m.cancel(c);
                    d = !1;
                    L.clear()
                }
            }
        } (),
        I = function() {
            function a(b) {
                var c = !b.empty();
                if (c) {
                    for (var d = b.f,
                    e = d.length - 1; 0 <= e; e--) {
                        var f = d[e];
                        f.e = f.Mb
                    }
                    b.Ja = !0
                }
                return c
            }
            var b = [];
            return {
                Ag: function(d) {
                    var e = c.options,
                    f = e.Wf;
                    0 < f ? $.qa(d, $.ha(d, c.options.ad),
                    function(a, d, g) {
                        d = "groups" === c.options.$c ? g: d;
                        L.c();
                        b.push(n.w.m(a).Ia(d * e.Vf * f).O({
                            duration: f,
                            B: {
                                e: {
                                    start: a.Te,
                                    end: a.Mb,
                                    I: W.W(e.Xf)
                                }
                            },
                            N: function() {
                                this.e = Math.max(0, this.e);
                                this.parent.Ja = !0;
                                Q.pc()
                            }
                        }).Ka(L.k).start())
                    }) : a(d) && Q.pc()
                },
                fc: a,
                stop: function() {
                    for (var a = b.length - 1; 0 <= a; a--) b[a].stop();
                    b = []
                }
            }
        } (),
        E = function() {
            var a = !1;
            return function(b) {
                if (a) return (new T).F().K();
                a = !0;
                var c = [];
                c.push(s.reset(g.tc, W.W(g.uc)));
                var d = new T;
                y.ub({
                    f: [],
                    na: !1,
                    ja: !1
                },
                b, !1, !0).H(function() {
                    F.Sa({
                        f: [],
                        na: !1,
                        ja: !1
                    },
                    b, !1).H(d.F)
                });
                c.push(d.K());
                return V(c).H(function() {
                    a = !1;
                    b && g.Ae()
                })
            }
        } ()
    }
    function Ua() {
        return {
            version: "3.0.1",
            //build: "bugfix/3.0.x/962bb189",
            brandingAllowed: 1
        }
    };
    window.CarrotSearchFoamTree = function(a) {
        function g(a, b) {
            if (!l || l.exists(a)) switch (a) {
            case "selection":
                return m.ua();
            case "open":
                return m.qa();
            case "exposure":
                return m.ma();
            case "state":
                return m.ha.apply(this, b);
            case "geometry":
                return m.ia.apply(this, b);
            case "hierarchy":
                return m.Ga.apply(this, b);
            case "imageData":
                return m.J.apply(this, b);
            case "times":
                return m.Vb();
            case "onModelChanged":
            case "onRedraw":
            case "onRolloutStart":
            case "onRolloutComplete":
            case "onRelaxationStep":
            case "onGroupHover":
            case "onGroupOpenOrCloseChanging":
            case "onGroupExposureChanging":
            case "onGroupSelectionChanging":
            case "onGroupSelectionChanged":
            case "onGroupClick":
            case "onGroupDoubleClick":
            case "onGroupHold":
                var d = c[a];
                return Array.isArray(d) ? d: [d];
            default:
                return c[a]
            }
        }
        function k(a) {
            function d(a, b) {
                return J.Q(f, a) ? (b(f[a]), delete f[a], 1) : 0
            }
            var f;
            if (0 === arguments.length) return 0;
            1 === arguments.length ? f = J.extend({},
            arguments[0]) : 2 === arguments.length && (f = {},
            f[arguments[0]] = arguments[1]);
            l && l.validate(f, b.Jg);
            var g = 0;
            m && (g += d("selection", m.n), g += d("open", m.k), g += d("exposure", m.c));
            var h = {};
            J.pa(f,
            function(a, b) {
                if (c[b] !== a || J.Bb(a)) h[b] = a,
                g++;
                c[b] = a
            });
            0 < g && e(h);
            return g
        }
        function d(a, b) {
            var d = "on" + a.charAt(0).toUpperCase() + a.slice(1),
            f = c[d];
            c[d] = b(Array.isArray(f) ? f: [f]);
            f = {};
            f[d] = c[d];
            e(f)
        }
        function e(a) { (function() {
        	       
                function d(b, e) {
                    return J.Q(a, b) || void 0 === e ? sa.m(c[b], h) : e
                }
                b.Jg = c.logging;
                b.tb = c.dataObject;
                b.o = c.pixelRatio;
                b.mb = c.wireframePixelRatio;
                b.backgroundColor = c.backgroundColor;
                b.Ca = c.initializer;
                b.zh = c.relaxationMaxDuration;
                b.Fe = c.relaxationVisible;
                b.Ee = c.relaxationQualityThreshold;
                b.Nh = c.showZeroWeightGroups;
                b.Fd = c.groupMinDiameter;
                b.ig = c.groupResizingBudget;
                b.Wf = c.groupGrowingDuration;
                b.Vf = c.groupGrowingDrag;
                b.Xf = c.groupGrowingEasing;
                b.If = c.groupBorderRadius;
                b.cc = c.groupBorderWidth;
                b.xb = c.groupBorderWidthScaling;
                b.Dd = c.groupInsetWidth;
                b.Jf = c.groupBorderRadiusCorrection;
                b.Ya = c.groupStrokeWidth;
                b.Ec = c.groupSelectionOutlineWidth;
                b.mg = c.groupSelectionOutlineColor;
                b.Hd = c.groupSelectionOutlineShadowSize;
                b.Gd = c.groupSelectionOutlineShadowColor;
                b.jg = c.groupSelectionFillHueShift;
                b.lg = c.groupSelectionFillSaturationShift;
                b.kg = c.groupSelectionFillLightnessShift;
                b.Id = c.groupSelectionStrokeHueShift;
                b.Kd = c.groupSelectionStrokeSaturationShift;
                b.Jd = c.groupSelectionStrokeLightnessShift;
                b.Uf = c.groupFillType;
                b.Qf = c.groupFillGradientRadius;
                b.Nf = c.groupFillGradientCenterHueShift;
                b.Pf = c.groupFillGradientCenterSaturationShift;
                b.Of = c.groupFillGradientCenterLightnessShift;
                b.Rf = c.groupFillGradientRimHueShift;
                b.Tf = c.groupFillGradientRimSaturationShift;
                b.Sf = c.groupFillGradientRimLightnessShift;
                b.wg = c.groupStrokeType;
                b.Ya = c.groupStrokeWidth;
                b.Ld = c.groupStrokePlainHueShift;
                b.Nd = c.groupStrokePlainSaturationShift;
                b.Md = c.groupStrokePlainLightnessShift;
                b.sg = c.groupStrokeGradientRadius;
                b.og = c.groupStrokeGradientAngle;
                b.tg = c.groupStrokeGradientUpperHueShift;
                b.vg = c.groupStrokeGradientUpperSaturationShift;
                b.ug = c.groupStrokeGradientUpperLightnessShift;
                b.pg = c.groupStrokeGradientLowerHueShift;
                b.rg = c.groupStrokeGradientLowerSaturationShift;
                b.qg = c.groupStrokeGradientLowerLightnessShift;
                b.Yf = c.groupHoverFillHueShift;
                b.$f = c.groupHoverFillSaturationShift;
                b.Zf = c.groupHoverFillLightnessShift;
                b.Ad = c.groupHoverStrokeHueShift;
                b.Cd = c.groupHoverStrokeSaturationShift;
                b.Bd = c.groupHoverStrokeLightnessShift;
                b.Oa = c.groupExposureScale;
                b.Mf = c.groupExposureShadowColor;
                b.zd = c.groupExposureShadowSize;
                b.ec = c.groupExposureZoomMargin;
                b.yg = c.groupUnexposureLightnessShift;
                b.zg = c.groupUnexposureSaturationShift;
                b.xg = c.groupUnexposureLabelColorThreshold;
                b.Ba = c.exposeDuration;
                b.vb = c.exposeEasing;
                b.mc = c.openCloseDuration;
                b.Kf = sa.m(c.groupColorDecorator, h);
                b.Lf = c.groupColorDecorator !== J.Ra;
                b.cg = sa.m(c.groupLabelDecorator, h);
                b.dg = c.groupLabelDecorator !== J.Ra;
                b.wh = c.rainbowStartColor;
                b.ph = c.rainbowEndColor;
                b.nh = c.rainbowColorDistribution;
                b.oh = c.rainbowColorDistributionAngle;
                b.sh = c.rainbowLightnessDistributionAngle;
                b.th = c.rainbowLightnessShift;
                b.uh = c.rainbowLightnessShiftCenter;
                b.vh = c.rainbowSaturationCorrection;
                b.rh = c.rainbowLightnessCorrection;
                b.Be = c.parentFillOpacity;
                b.Rg = c.parentStrokeOpacity;
                b.Qg = c.parentLabelOpacity;
                b.Ce = c.parentOpacityBalancing;
                b.eg = c.groupLabelDottingThreshold;
                b.hg = c.groupLabelUpdateThreshold;
                b.fg = c.groupLabelFontFamily;
                b.Ed = c.groupLabelMinFontSize;
                b.gi = c.groupLabelMaxFontSize;
                b.fi = c.groupLabelLineHeight;
                b.ei = c.groupLabelHorizontalPadding;
                b.ii = c.groupLabelVerticalPadding;
                b.hi = c.groupLabelMaxTotalHeight;
                b.bg = c.groupLabelDarkColor;
                b.gg = c.groupLabelLightColor;
                b.ag = c.groupLabelColorThreshold;
                b.Vh = c.wireframeDrawMaxDuration;
                b.Wh = c.wireframeLabelDrawing;
                b.$e = c.wireframeToFinalFadeDuration;
                b.Xh = c.wireframeToFinalFadeDelay;
                b.Ff = c.finalCompleteDrawMaxDuration;
                b.Gf = c.finalIncrementalDrawMaxDuration;
                b.vd = c.finalToWireframeFadeDuration;
                b.vc = c.androidStockBrowserWorkaround;
                b.ad = c.rolloutStartPoint;
                b.$c = c.rolloutMethod;
                b.Eh = c.rolloutEasing;
                b.Zc = c.rolloutDuration;
                b.Je = c.rolloutScalingStrength;
                b.Le = c.rolloutTranslationXStrength;
                b.Me = c.rolloutTranslationYStrength;
                b.Ie = c.rolloutRotationStrength;
                b.Ke = c.rolloutTransformationCenter;
                b.Ih = c.rolloutPolygonDrag;
                b.Jh = c.rolloutPolygonDuration;
                b.Fh = c.rolloutLabelDelay;
                b.Gh = c.rolloutLabelDrag;
                b.Hh = c.rolloutLabelDuration;
                b.Dh = c.rolloutChildGroupsDrag;
                b.Ch = c.rolloutChildGroupsDelay;
                b.gh = c.pullbackStartPoint;
                b.$g = c.pullbackMethod;
                b.Wg = c.pullbackEasing;
                b.ki = c.pullbackType;
                b.Tc = c.pullbackDuration;
                b.fh = c.pullbackScalingStrength;
                b.ih = c.pullbackTranslationXStrength;
                b.jh = c.pullbackTranslationYStrength;
                b.eh = c.pullbackRotationStrength;
                b.hh = c.pullbackTransformationCenter;
                b.ah = c.pullbackPolygonDelay;
                b.bh = c.pullbackPolygonDrag;
                b.dh = c.pullbackPolygonDuration;
                b.Xg = c.pullbackLabelDelay;
                b.Yg = c.pullbackLabelDrag;
                b.Zg = c.pullbackLabelDuration;
                b.Tg = c.pullbackChildGroupsDelay;
                b.Ug = c.pullbackChildGroupsDrag;
                b.Vg = c.pullbackChildGroupsDuration;
                b.td = c.fadeDuration;
                b.Ef = c.fadeEasing;
                b.Yh = c.zoomMouseWheelFactor;
                b.tc = c.zoomMouseWheelDuration;
                b.uc = c.zoomMouseWheelEasing;
                b.Kg = c.maxLabelSizeForTitleBar;
                b.Qh = c.titleBarFontFamily;
                b.Ve = c.titleBarBackgroundColor;
                b.We = c.titleBarTextColor;
                b.Rh = c.titleBarMinFontSize;
                b.cd = c.titleBarMaxFontSize;
                b.Sh = c.titleBarTextPaddingLeftRight;
                b.Th = c.titleBarTextPaddingTopBottom;
                b.Ph = c.titleBarDecorator;
                b.ai = c.attributionText;
                b.Zh = c.attributionLogo;
                b.bi = c.attributionUrl;
                b.Pd = c.interactionHandler;
                b.ve = d("onModelChanging", b.ve);
                b.ue = d("onModelChanged", b.ue);
                b.we = d("onRedraw", b.we);
                b.ze = d("onRolloutStart", b.ze);
                b.ye = d("onRolloutComplete", b.ye);
                b.xe = d("onRelaxationStep", b.xe);
                b.Ae = d("onViewReset", b.Ae);
                b.ne = d("onGroupOpenOrCloseChanging", b.ne);
                b.me = d("onGroupOpenOrCloseChanged", b.me);
                b.he = d("onGroupExposureChanging", b.he);
                b.ge = d("onGroupExposureChanged", b.ge);
                b.pe = d("onGroupSelectionChanging", b.pe);
                b.oe = d("onGroupSelectionChanged", b.oe);
                b.je = d("onGroupHover", b.je);
                b.be = d("onGroupClick", b.be);
                b.ce = d("onGroupDoubleClick", b.ce);
                b.ie = d("onGroupHold", b.ie);
                b.le = d("onGroupMouseWheel", b.le);
                b.ke = d("onGroupMouseDown", b.ke);
                b.fe = d("onGroupDragStart", b.fe);
                b.de = d("onGroupDrag", b.de);
                b.ee = d("onGroupDragEnd", b.ee);
                b.se = d("onGroupTransformStart", b.se);
                b.qe = d("onGroupTransform", b.qe);
                b.re = d("onGroupTransformEnd", b.re);
                b.te = d("onKeyUp", b.te)
            })();
            b.ci = S.X(b.backgroundColor);
            b.xh = S.X(b.wh);
            b.qh = S.X(b.ph);
            b.ng = S.X(b.Gd);
            b.$h = null;
            m && (m.Ua(a), J.Q(a, "dataObject") && m.reload())
        }
        function f(a) {
            return function() {
                return a.apply(this, arguments).Hf(h)
            }
        }
        window.CarrotSearchFoamTree.supported || la.ia("not supported.");
        var h = this,
        l = window.CarrotSearchFoamTree.asserts,
        c = J.extend({},
        window.CarrotSearchFoamTree.defaults),
        b = {};
        k(a); (a = c.element || document.getElementById(c.id)) || la.ia("embedding failed.");
        c.element = a;
        var m = new Ya(a, b, c);
        m.q();
        var n = {
            get: function(a) {
                return 0 === arguments.length ? J.extend({},
                c) : g(arguments[0], Array.prototype.slice.call(arguments, 1))
            },
            set: k,
            on: function(a, b) {
                d(a,
                function(a) {
                    a.push(b);
                    return a
                })
            },
            off: function(a, b) {
                d(a,
                function(a) {
                    return a.filter(function(a) {
                        return a !== b
                    })
                })
            },
            resize: m.X,
            redraw: m.Tb,
            select: f(m.n),
            expose: f(m.c),
            open: f(m.k),
            reset: f(m.reset),
            zoom: f(m.Wb),
            trigger: function(a, b) {
                var c = m.Ea(a);
                c && c(b)
            },
            dispose: function() {
                function a() {
                    throw "FoamTree instance disposed";
                }
                m.Ma();
                J.pa(n,
                function(b, c) {
                    "dispose" !== c && (h[c] = a)
                })
            }
        };
        J.pa(n,
        function(a, b) {
            h[b] = a
        });
        m.reload()
    };
    window["CarrotSearchFoamTree.asserts"] && (window.CarrotSearchFoamTree.asserts = window["CarrotSearchFoamTree.asserts"], delete window["CarrotSearchFoamTree.asserts"]);
    
    var Za = window.CarrotSearchFoamTree,
    $a, ab = document.createElement("canvas");
    $a = !(!ab.getContext || !ab.getContext("2d"));
    Za.supported = $a;
    window.CarrotSearchFoamTree.version = Ua;
    window.CarrotSearchFoamTree.defaults = Object.freeze({
        id: void 0,
        element: void 0,
        logging: !1,
        dataObject: void 0,
        pixelRatio: 1,
        wireframePixelRatio: 1,
        initializer: "fisheye",
        relaxationMaxDuration: 3E3,
        relaxationVisible: !1,
        relaxationQualityThreshold: 1,
        showZeroWeightGroups: !0,
        groupMinDiameter: 10,
        groupGrowingDuration: 0,
        groupGrowingEasing: "bounce",
        groupGrowingDrag: 0,
        groupResizingBudget: 2,
        groupBorderRadius: 0.3,
        groupBorderWidth: 4,
        groupBorderWidthScaling: 0.6,
        groupInsetWidth: 6,
        groupBorderRadiusCorrection: 0.45,
        groupSelectionOutlineWidth: 5,
        groupSelectionOutlineColor: "#222",
        groupSelectionOutlineShadowSize: 0,
        groupSelectionOutlineShadowColor: "#fff",
        groupSelectionFillHueShift: 0,
        groupSelectionFillSaturationShift: 0,
        groupSelectionFillLightnessShift: 0,
        groupSelectionStrokeHueShift: 0,
        groupSelectionStrokeSaturationShift: 0,
        groupSelectionStrokeLightnessShift: -10,
        groupFillType: "gradient",
        groupFillGradientRadius: 1,
        groupFillGradientCenterHueShift: 0,
        groupFillGradientCenterSaturationShift: 0,
        groupFillGradientCenterLightnessShift: 20,
        groupFillGradientRimHueShift: 0,
        groupFillGradientRimSaturationShift: 0,
        groupFillGradientRimLightnessShift: -5,
        groupStrokeType: "plain",
        groupStrokeWidth: 1.5,
        groupStrokePlainHueShift: 0,
        groupStrokePlainSaturationShift: 0,
        groupStrokePlainLightnessShift: -10,
        groupStrokeGradientRadius: 1,
        groupStrokeGradientAngle: 45,
        groupStrokeGradientUpperHueShift: 0,
        groupStrokeGradientUpperSaturationShift: 0,
        groupStrokeGradientUpperLightnessShift: 20,
        groupStrokeGradientLowerHueShift: 0,
        groupStrokeGradientLowerSaturationShift: 0,
        groupStrokeGradientLowerLightnessShift: -20,
        groupHoverFillHueShift: 0,
        groupHoverFillSaturationShift: 0,
        groupHoverFillLightnessShift: 20,
        groupHoverStrokeHueShift: 0,
        groupHoverStrokeSaturationShift: 0,
        groupHoverStrokeLightnessShift: -10,
        groupExposureScale: 1.15,
        groupExposureShadowColor: "rgba(0, 0, 0, 0.5)",
        groupExposureShadowSize: 50,
        groupExposureZoomMargin: 0.1,
        groupUnexposureLightnessShift: 65,
        groupUnexposureSaturationShift: -65,
        groupUnexposureLabelColorThreshold: 0.35,
        exposeDuration: 700,
        exposeEasing: "squareInOut",
        groupColorDecorator: J.Ra,
        groupLabelDecorator: J.Ra,
        openCloseDuration: 500,
        rainbowColorDistribution: "radial",
        rainbowColorDistributionAngle: -45,
        rainbowLightnessDistributionAngle: 45,
        rainbowSaturationCorrection: 0.1,
        rainbowLightnessCorrection: 0.4,
        rainbowStartColor: "hsla(0, 100%, 55%, 1)",
        rainbowEndColor: "hsla(359, 100%, 55%, 1)",
        rainbowLightnessShift: 50,
        rainbowLightnessShiftCenter: 0.2,
        parentFillOpacity: 0.7,
        parentStrokeOpacity: 1,
        parentLabelOpacity: 1,
        parentOpacityBalancing: !0,
        wireframeDrawMaxDuration: 15,
        wireframeLabelDrawing: "auto",
        wireframeToFinalFadeDuration: 500,
        wireframeToFinalFadeDelay: 300,
        finalCompleteDrawMaxDuration: 80,
        finalIncrementalDrawMaxDuration: 100,
        finalToWireframeFadeDuration: 200,
        androidStockBrowserWorkaround: w.Qd(),
        groupLabelFontFamily: "sans-serif",
        groupLabelLineHeight: 1.05,
        groupLabelHorizontalPadding: 1,
        groupLabelVerticalPadding: 1,
        groupLabelMinFontSize: 6,
        groupLabelMaxFontSize: 160,
        groupLabelMaxTotalHeight: 0.9,
        groupLabelDottingThreshold: 0.5,
        groupLabelUpdateThreshold: 0.05,
        groupLabelDarkColor: "#000",
        groupLabelLightColor: "#fff",
        groupLabelColorThreshold: 0.35,
        rolloutStartPoint: "center",
        rolloutEasing: "squareOut",
        rolloutMethod: "groups",
        rolloutDuration: 2E3,
        rolloutScalingStrength: -0.7,
        rolloutTranslationXStrength: 0,
        rolloutTranslationYStrength: 0,
        rolloutRotationStrength: -0.7,
        rolloutTransformationCenter: 0.7,
        rolloutPolygonDrag: 0.1,
        rolloutPolygonDuration: 0.5,
        rolloutLabelDelay: 0.8,
        rolloutLabelDrag: 0.1,
        rolloutLabelDuration: 0.5,
        rolloutChildGroupsDrag: 0.1,
        rolloutChildGroupsDelay: 0.2,
        pullbackStartPoint: "center",
        pullbackEasing: "squareIn",
        pullbackMethod: "groups",
        pullbackDuration: 1500,
        pullbackScalingStrength: -0.7,
        pullbackTranslationXStrength: 0,
        pullbackTranslationYStrength: 0,
        pullbackRotationStrength: -0.7,
        pullbackTransformationCenter: 0.7,
        pullbackPolygonDelay: 0.3,
        pullbackPolygonDrag: 0.1,
        pullbackPolygonDuration: 0.8,
        pullbackLabelDelay: 0,
        pullbackLabelDrag: 0.1,
        pullbackLabelDuration: 0.3,
        pullbackChildGroupsDelay: 0.1,
        pullbackChildGroupsDrag: 0.1,
        pullbackChildGroupsDuration: 0.3,
        fadeDuration: 700,
        fadeEasing: "cubicInOut",
        zoomMouseWheelFactor: 1.5,
        zoomMouseWheelDuration: 700,
        zoomMouseWheelEasing: "squareInOut",
        maxLabelSizeForTitleBar: 8,
        titleBarFontFamily: null,
        titleBarBackgroundColor: "rgba(0, 0, 0, 0.5)",
        titleBarTextColor: "rgba(255, 255, 255, 1)",
        titleBarMinFontSize: 10,
        titleBarMaxFontSize: 40,
        titleBarTextPaddingLeftRight: 20,
        titleBarTextPaddingTopBottom: 15,
        titleBarDecorator: J.Ra,
        attributionText: null,
        attributionLogo: null,
        attributionUrl: "http://carrotsearch.com/foamtree",
        interactionHandler: w.Od() ? "hammerjs": "builtin",
        onModelChanging: [],
        onModelChanged: [],
        onRedraw: [],
        onRolloutStart: [],
        onRolloutComplete: [],
        onRelaxationStep: [],
        onViewReset: [],
        onGroupOpenOrCloseChanging: [],
        onGroupOpenOrCloseChanged: [],
        onGroupExposureChanging: [],
        onGroupExposureChanged: [],
        onGroupSelectionChanging: [],
        onGroupSelectionChanged: [],
        onGroupHover: [],
        onGroupClick: [],
        onGroupDoubleClick: [],
        onGroupHold: [],
        onGroupMouseWheel: [],
        onGroupMouseDown: [],
        onGroupDragStart: [],
        onGroupDrag: [],
        onGroupDragEnd: [],
        onGroupTransformStart: [],
        onGroupTransform: [],
        onGroupTransformEnd: [],
        onKeyUp: [],
        selection: null,
        open: null,
        exposure: null,
        imageData: null,
        hierarchy: null,
        geometry: null,
        state: null,
        times: null
    });
})();